thinkphp5.1 添加 允许自定义请求标头(Access-Control-Allow-Headers)
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
具体参考:nginx导致请求头header中的自定义请求标头丢失问题
版权声明:
作者:东明兄
链接:https://blog.crazyming.com/note/931/
来源:CrazyMing
文章版权归作者所有,未经允许请勿转载。
共有 0 条评论