Access-Control-Allow-Headers 用于给预检请求(options)列出服务端允许的 自定义标头,如果前端发送的请求 中包含自定义的请求标头,且该标头不包含在Access-Control-Allow-Headers中,该请求无法成功发起.
在thinkphp5.1中浏览框架代码:
(路径:\thinkphp\library\think\route\Rule.php)
$header = [
'Access-Control-Allow-Credentials' => 'true',
'Access-Control-Allow-Methods' => 'GET, POST, PATCH, PUT, DELETE',
'Access-Control-Allow-Headers' => 'Authorization, Content-Type, If-Match, If-Modified-Since, If-None-Match, If-Unmodified-Since, X-Requested-With',
];
看到 允许的标头 有 Authorization, Content-Type, If-Match, If-Modified-Since, If-None-Match, If-Unmodified-Since, X-Requested-With
项目中我要自定义一个标头 Operator_id, 根据thinkphp5.1 文档 跨域请求 这一章介绍:https://www.kancloud.cn/manual/thinkphp5_1/489844
在路由配置中这样写 就OK了:
Route::header('Access-Control-Allow-Headers', 'Operator_id,Authorization, Content-Type, If-Match, If-Modified-Since, If-None-Match, If-Unmodified-Since, X-Requested-With')//允许自定义标头 Operator_id
->allowCrossDomain();//路由全局允许跨域
遇到个坑:
将项目部署到nginx 上后 获取不到 这个 operator_id ,原因是 nginx 默认忽略 带下划线的 header
2+
1.如需转载本站原创文章,请务必注明文章出处并附上链接,非常感谢。
2.本站用于记录个人 工作、学习、生活,非商业网站,更多信息请 点击这里
发表评论邮箱地址不会被公开。
评论
姓名
电子邮件
站点