Laravel 6 CORS 政策问题与 API

这是我尝试过的


中间件


 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”标头。


任何原因?


慕桂英546537
浏览 157回答 2
2回答

炎炎设计

最简单的解决方案 转到 bootstrap 文件夹并打开 app.php 文件。然后只需在文件顶部添加这些行。应用程序.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。

人到中年有点甜

需要 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 服务的路径(请参阅下面的配置):配置/cors.php'paths' => ['api/*'],更多细节https://github.com/fruitcake/laravel-cors
打开App,查看更多内容
随时随地看视频慕课网APP