cors / ajax 请求的重复 OPTIONS 请求
Posted
技术标签:
【中文标题】cors / ajax 请求的重复 OPTIONS 请求【英文标题】:Repeated OPTIONS requests for cors / ajax requests 【发布时间】:2015-03-01 00:28:52 【问题描述】:在我的网站上,我有一个自动建议的文本输入,它会在用户键入时建议结果。结果由对不同域上的 API 的 AJAX 调用提供。这意味着我必须使用 CORS 来允许请求。
一切运行良好,但每次用户输入一个新字符时,浏览器都会发送一个新的 OPTIONS 请求以确保它被授权。
有没有办法绕过所有这些重复的选项请求?
我的接收请求的 php 脚本有
header("Access-Control-Allow-Origin: http://consent.example.com");
所有请求都来自consent.example.com
。需要明确的是,授权工作正常,请求成功完成,但我不知道为什么它需要继续进行选项调用。对我来说,浏览器会缓存它是有意义的。
【问题讨论】:
【参考方案1】:根据RFC 2616 ("Hypertext Transfer Protocol -- HTTP/1.1"),第 9.2 节:
9.2 选项
...
对此方法的响应不可缓存。
HTTP 规范明确禁止缓存 OPTIONS 响应。
值得注意的是,GET 响应也不使用缓存(我看到 customers?search=alex
每次都是 200)。这仅仅是因为服务器选择不为该请求发送 304 响应,或者您的浏览器没有通过 If-Modified-Since
或 If-None-Match
请求标头让服务器知道它有缓存副本。
【讨论】:
以上是关于cors / ajax 请求的重复 OPTIONS 请求的主要内容,如果未能解决你的问题,请参考以下文章