Laravel 6 CORS 政策问题与 API
Posted
技术标签:
【中文标题】Laravel 6 CORS 政策问题与 API【英文标题】:Laravel 6 CORS policy issue with API 【发布时间】:2020-03-30 08:17:56 【问题描述】:这是我尝试过的
中间件
return $next($request)
->header('Access-Control-Allow-Origin', '*')
->header('Access-Control-Allow-Credentials', 'true')
->header('Access-Control-Allow-Headers', 'Origin, Content-Type, Authorization, X-Requested-With, Accept, X-Token-Auth, Application')
->header('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS');
API 路由
Route::group(['middleware' => ['cors', 'auth:api']], function()
Route::options('any');
Route::post('user/profile','UserController@profile');
内核.php
protected $routeMiddleware = [
'cors' => \App\Http\Middleware\Cors::class,
但是,我仍然在从另一个来源调用 API 时收到此错误。
对预检请求的响应未通过访问控制检查:否 请求中存在“Access-Control-Allow-Origin”标头 资源。
有什么原因吗?
【问题讨论】:
您找到解决方案了吗?我找不到解决方案。所有解决方案都不起作用。忍无可忍。我不想修改文件 bootstrap/app.php 【参考方案1】:在您的 composer.json 中需要 fruitcake/laravel-cors 包并更新您的依赖项:
composer require fruitcake/laravel-cors
全球使用情况
要允许所有路由使用 CORS,请在 app/Http/Kernel.php 类的 $middleware 属性中添加 HandleCors 中间件:
protected $middleware = [
// ...
\Fruitcake\Cors\HandleCors::class,
];
配置
php artisan vendor:publish --tag="cors"
现在更新配置以定义您想要运行 CORS 服务的路径,(请参阅下面的配置):
config/cors.php
'paths' => ['api/*'],
更多详情https://github.com/fruitcake/laravel-cors
【讨论】:
HandleCors 中间件应该在$middleware
:***.com/a/63913814/11792577的顶部【参考方案2】:
最简单的解决方案 转到引导文件夹并打开 app.php 文件。然后只需在文件顶部添加这些行。 app.php
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: *');
header('Access-Control-Allow-Headers: *');
另一种解决方案:
php artisan make:middleware Cors
现在从 App\Http\Middleware 文件夹中打开 Cors.php 并将 handle() 函数替换为以下代码:
Cors.php
public function handle($request, Closure $next)
return $next($request)
->header('Access-Control-Allow-Origin', '*')
->header('Access-Control-Allow-Methods', 'GET, POST, PUT, PATCH, DELETE,
OPTIONS')
->header('Access-Control-Allow-Headers', 'Content-Type, Authorizations');
最后,从 App\Http 文件夹中打开 Kernel.php,将下面一行添加到 $middleware 数组中:
protected $middleware = [
...
\App\Http\Middleware\Cors::class,
];
现在运行应用程序并从任何地方调用 API。
教程结束。谢谢你。 ?
MyNotePaper回答
【讨论】:
以上是关于Laravel 6 CORS 政策问题与 API的主要内容,如果未能解决你的问题,请参考以下文章
被 CORS 政策阻止并没有解决! Laravel + Vuejs
当我尝试使用 Axios 调用 Instagram API 时,我“被 CORS 政策阻止” [重复]
barryvdh/laravel-cors 配置在 Laravel 5.6 中不起作用;忽略'allowedMethods'
CORS 政策问题刚刚开始,没有代码更改 - “CORS 政策:'Access-Control-Allow-Origin' 标头包含多个值”