2

在 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 中它不再工作了。

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

4

2 回答 2

1

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

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

更新。

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

于 2016-02-15T15:34:04.640 回答
1

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

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

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

有同样的问题,所以我希望这对你有帮助:)

于 2016-03-07T22:25:01.413 回答