API的Laravel 6 CORS政策问题

时间:2019-12-05 11:49:13

标签: php cors laravel-6

这是我尝试过的

中间件

 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');

Kernel.php

protected $routeMiddleware = [
    'cors' => \App\Http\Middleware\Cors::class,

但仍然,我在另一个来源的API调用中遇到此错误。

  

对预检请求的响应未通过访问控制检查:否   请求中存在“ Access-Control-Allow-Origin”标头   资源。

有什么理由吗?

1 个答案:

答案 0 :(得分:1)

最简单的解决方案 转到bootstrap文件夹并打开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回答