首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在本地浏览器上修复How上调用Laravel时的CORS错误

如何在本地浏览器上修复How上调用Laravel时的CORS错误
EN

Stack Overflow用户
提问于 2022-08-17 12:50:30
回答 1查看 334关注 0票数 -1

我让Laravel 8运行在家庭网站(Windows 11 OS)上,可以正常地从邮递员调用API,但是当我试图从浏览器调用任何API(使用VUE JS构建)时,我会得到CORS错误。这是我的Http/Middleware/Cors.php

代码语言:javascript
运行
复制
namespace App\Http\Middleware;
use Closure;
class Cors {
    /**
     * Handle an incoming request.
     *
     * @param \Illuminate\Http\Request $request
     * @param \Closure $next
     * @return mixed
     */
    public function handle($request, Closure $next) {
        $response = $next($request);
        $response->headers->set('Access-Control-Allow-Origin', '*');
        $response->headers->set('Access-Control-Allow-Methods', 'POST, GET, OPTIONS, PUT, DELETE');
        $response->headers->set('Access-Control-Allow-Headers', '*');

        return $response;
    }

}

THis没有修复这个问题,所以我安装了fruitcake/laravel-cors并修改了app\Http\Kernel.php

代码语言:javascript
运行
复制
protected $middleware = [
    \Fruitcake\Cors\HandleCors::class,
    \App\Http\Middleware\TrustProxies::class,
    \App\Http\Middleware\CheckForMaintenanceMode::class,
    \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
    \App\Http\Middleware\Cors::class,
    \App\Http\Middleware\TrimStrings::class,
    \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
    \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
];

它也不起作用,所以我尝试修改cors配置

代码语言:javascript
运行
复制
'paths' => ['*', 'api/*'],
'allowed_origins' => ['*', 'http://localhost:8081', 'http://192.168.1.27'],

但是仍然不能从浏览器向家庭网站上的Laravel发出API请求。有什么帮助吗?

更新

在控制台里我得到

代码语言:javascript
运行
复制
ccess to XMLHttpRequest at 'https://backend.test:44300/api/passport_auth' from origin 'http://localhost:8081' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.

EN

回答 1

Stack Overflow用户

发布于 2022-08-17 13:23:40

尝试将这些行放到启用/etc/nginx/site的/domain.tld配置文件中。有关更多细节,请查看此处:https://github.com/laravel/homestead/issues/1368#issuecomment-609668101

代码语言:javascript
运行
复制
add_header 'Access-Control-Allow-Origin' '*' always;
add_header 'Access-Control-Allow-Credentials' 'true' always;
add_header 'Access-Control-Allow-Methods' 'GET, POST, PUT, DELETE, OPTIONS' always;
add_header 'Access-Control-Allow-Headers' 'Accept,Authorization,Cache-Control,Content-Type,DNT,If-Modified-Since,Keep-Alive,Origin,User-Agent,X-Requested-With' always;
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73388792

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档