【发布时间】:2018-07-24 23:21:27
【问题描述】:
我正在尝试制作一个小的 API,我可以在没有失败或错误的情况下获得选项请求。 我做了这个中间件:
public function handle($request, Closure $next)
{
if ($request->method() === 'OPTIONS') {
$headers = [
'Access-Control-Allow-Origin' => '*',
'Access-Control-Allow-Methods'=>'POST, GET, OPTIONS, PUT, DELETE'
];
return (new Response(' ', 200))
->withHeaders($headers);
}
else {
return $next($request);
};
}
我的web.php。
$router->get('/', function () use ($router) {
return $router->app->version();
});
$router->get('/cors', 'CorsController@index');
当我使用邮递员发送请求时,它会在响应中添加标头。但是,但是任何选项请求都会得到 200 响应,并且不会被重定向或任何东西。
之前我尝试在我的中间件中这样做:
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');
}
但这总是抛出一个MethodNotAllowedError。
当我创建一个新内容时,我也会使用我的请求内容。 我的问题是如何在 laravel 中正确处理带有 CORS 的选项请求,它不会抛出错误并且我不会丢失我的请求内容?
【问题讨论】: