laravel设置了Access-Control-Allow-Origin还是跨域
时间: 2023-07-05 13:32:03 浏览: 182
如果你已经在 Laravel 中设置了 Access-Control-Allow-Origin 头部,但仍然出现跨域问题,可能是因为浏览器发出了预检请求(Preflight Request)。预检请求是在发送请求之前,浏览器会先发送一个 OPTIONS 请求,以获取服务器是否支持跨域访问等信息。
为了处理预检请求,你需要在 Laravel 中添加一个处理 OPTIONS 请求的路由和方法,并在方法中设置 Access-Control-Allow-Headers 和 Access-Control-Allow-Methods 头部。
下面是一个示例代码:
```php
Route::options('/{any}', function () {
$headers = [
'Access-Control-Allow-Origin' => '*',
'Access-Control-Allow-Methods' => 'POST, GET, OPTIONS, PUT, DELETE',
'Access-Control-Allow-Headers' => 'Content-Type, X-Auth-Token, Origin, Authorization'
];
return response()->json('OK', 200, $headers);
})->where('any', '.*');
```
这里使用了一个通配符路由,以便匹配任何请求路径。在路由方法中,设置了 Access-Control-Allow-Origin、Access-Control-Allow-Methods 和 Access-Control-Allow-Headers 头部,以允许跨域访问。注意,Access-Control-Allow-Headers 头部中需要包含 Content-Type、X-Auth-Token、Origin 和 Authorization 等常用请求头部。
阅读全文