发送带有自定义 HTTP 标头的跨域请求时禁用预检 OPTION 请求
Posted
技术标签:
【中文标题】发送带有自定义 HTTP 标头的跨域请求时禁用预检 OPTION 请求【英文标题】:Disable preflight OPTION request when sending a cross domain request with custom HTTP header 【发布时间】:2013-04-24 14:12:02 【问题描述】:我刚刚发现我的浏览器在尝试使用自定义 http 标头进行跨域 ajax 调用时发送了一个额外的“OPTION”请求。 我想它被称为“预检请求”。
是否可以禁用此功能并仅发送初始请求?
这是我的 javascript 测试代码:
$(document).ready(function()
$.ajax(
url: "http://google.fr",
crossDomain: true,
headers:
"X-custom-parameter": true
);
);
感谢您的帮助!
【问题讨论】:
【参考方案1】:不,绝对不可能绕过 CORS 预检请求。预检请求的存在是为了以安全的方式允许跨域请求。在上面的示例中,您尝试访问 google.fr,但 google.fr 不支持 CORS。谷歌没有办法解决这个问题,因为谷歌在其网页上不支持跨域请求。一般来说,如果您拥有服务器的所有权,您可以选择支持 CORS、支持 JSON-P 等替代跨域黑客攻击或使用服务器端代理。
【讨论】:
以上是关于发送带有自定义 HTTP 标头的跨域请求时禁用预检 OPTION 请求的主要内容,如果未能解决你的问题,请参考以下文章
如果我在使用 cors 时添加标准 http 标头,为啥会预检请求?