laravel - 预检响应中的 Access-Control-Allow-Headers 不允许请求头字段 X-CSRF-TOKEN

标签 laravel cors

我有一个 Laravel 项目,当我运行时 php 工匠服务 ,浏览器显示错误:

Failed to load http://127.0.0.1:8000/api/news/get-news-list: Request header field X-CSRF-TOKEN is not allowed by Access-Control-Allow-Headers in preflight response.

我的代码如下:
axios.get(domainName+'/api/news/get-news-list').then(response=>{
    news = response.data.list;
}).catch(function (error) {
    console.log(error);
});

我已经添加了如下中间件:

内核.php
protected $middleware = [
    \App\Http\Middleware\Cors::class
];

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

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

}

api.php
Route::prefix('news')->group(function () {
    Route::get('get-news-list', 'API\NewsController@getList')->middleware('cors');
});

谁能告诉我如何解决这个问题?

最佳答案

只需添加 x-csrf-token标题到允许列表。在你的情况下,它在 Cors.php文件,标题 Access-Control-Allow-Headers .
Access-Control-Allow-Headers控制 CORS 请求中允许使用哪些 header 。

关于laravel - 预检响应中的 Access-Control-Allow-Headers 不允许请求头字段 X-CSRF-TOKEN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51819968/

相关文章:

php - 获取两个日期之间的随机日期

php - Laravel GuzzleHTTP XML 响应 JSON

带有模式的 Php 格式字符串

laravel - Laravel 中的 VueJS 设置

amazon-web-services - API 网关 Lambda CORS 处理程序。安全获取 Origin

validation - 在替换器中访问验证失败的值?

amazon-web-services - aws s3 的预检响应无效(重定向)

javascript - 为什么 Access-Control-Allow-Origin 在 Codeigniter Rest-Server 中不起作用

javascript - 通过 Firebase 获取 html 进行 React 时解析错误

node.js - AWS API Gateway 在预检响应中返回 Access-Control-Allow-Headers 不允许的 access-control-allow-origin