jquery - 跨域 ajax 请求中的预检标头未解决授权标头
问题描述
我想使用ajax访问从https://A/到https://B/的跨域。jquery
我的请求标头如下所示:
Access-Control-Request-Headers: authorization
Access-Control-Request-Method: GET
Origin: https://A
Referer: https://A/test/index.html
实际上在服务器端设置了所有必要的标头:
Access-Control-Allow-Credentials: true
Access-Control-Allow-Headers: Authorization,DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,C$
Access-Control-Allow-Methods: GET,POST,OPTIONS,DELETE,PUT,PROPFIND,PROPPATCH,NOTIMPLEMENTED,OPTIONS,UNLOCK,MKCOL,COPY,LOCK,MOVE,HEAD
Access-Control-Allow-Origin: https://A
Access-Control-Max-Age: 1728000
但是我的谷歌浏览器仍然只发送上面的预检标题,而不是真正的标题,所以我不断收到 401 错误。我错过了什么吗?
更新:Chrome 给出以下错误消息:
对预检请求的响应未通过访问控制检查:它没有 HTTP ok 状态。
解决方案
好的,我有一个解决方法。我在请求的文档中添加了以下 PHP 代码。
if($_SERVER['REQUEST_METHOD'] == 'OPTIONS'){
http_response_code(200);
exit;
}
但我仍然愿意接受任何更好的解决方案。
推荐阅读
- python - docker图像中python函数中的绝对路径
- python - 将嵌套字典转换为 pandas 数据框并绘图
- ios - SwiftUI 中的 UIBarButtonItem barButtonSystemItem 初始化程序等效项
- android-fragments - 当我按下片段屏幕重叠时
- python - 如何将列表的重复项打印为数字?
- windows - 如何确定 Windows 上的另一个进程打开了哪些文件?
- java - 我该如何解决这个插件问题
- python - 如何使pyenv可以识别已经安装的python版本?
- c# - 在字符串中双引号的开头和结尾添加不同的文本
- php - Woocommerce 功能可在订单编辑页面上显示此自定义字段值