Laravel Lumen 5.2 Cors 中间件不工作

Posted

技术标签:

【中文标题】Laravel Lumen 5.2 Cors 中间件不工作【英文标题】:Laravel Lumen 5.2 Cors Middleware not working 【发布时间】:2016-05-26 13:26:54 【问题描述】:

在 Laravel Lumen 5.1 中,我在我的 CorsMiddleware 中使用它:

public function handle($request, \Closure $next)

    $response = $next($request);
    $response->header('Access-Control-Allow-Methods', 'HEAD, GET, POST, PUT, PATCH, DELETE');
    $response->header('Access-Control-Allow-Headers',  $request->header('Access-Control-Request-Headers'));
    $response->header('Access-Control-Allow-Origin', '*');
    return $response;

但在 5.2 中它不再工作了。

如何在响应中返回适当的标头?

【问题讨论】:

【参考方案1】:

将所有路由放入其中以启用 Web 中间件组:

Route::group(['middleware' => ['web']], function () 
    // Here comes your routes
);

更新。

要解决这个问题,请使用这个包:github.com/barryvdh/laravel-cors

【讨论】:

标题仍然丢失 能否为您的问题添加更多信息?喜欢路由文件?或者你可以简单地使用这个包:github.com/barryvdh/laravel-cors【参考方案2】:

浏览器使用 OPTIONS 请求来检查您的端点上是否有任何 CORS 标头。这意味着,您需要首先处理这些飞行前 OPTIONS 请求,为它们提供正确的标头。

在 Lumen/Laravel 中,您还需要将 CORS 中间件添加到与 CORS 资源相同的路由中,但使用 OPTIONS 方法请求:

$app->options(
    'your/cors/uri',
    [
        'middleware' => 'cors', function() 
         function()  return response('', 200); 
    ]
);

遇到了同样的问题,希望对你有帮助:)

【讨论】:

以上是关于Laravel Lumen 5.2 Cors 中间件不工作的主要内容,如果未能解决你的问题,请参考以下文章

Angular IO 与 Laravel Lumen PHP API CORS 问题

Laravel/lumen 5.2 从现有数据库生成迁移表

使用 Laravel/Lumen 5.2 和 apache 2.4

带有标题集的流明/laravel中的CORS问题

如何在 LUMEN 5.2 中激活会话

在 Lumen (Laravel) 中启用中间件