重复OPTIONS请求cors / ajax请求

时间:2015-01-02 17:35:04

标签: javascript php ajax http cors

在我的网站上,我有一个自动建议的文字输入,用于根据用户类型建议结果。结果由对不同域上的API的AJAX调用提供。这意味着我必须使用CORS来允许请求。

这一切都运作良好,但每次用户键入新字符时,浏览器都会发送新的OPTIONS请求以确保其获得授权。

See the request sequence here

是否有解决所有这些重复选项请求的方法?

我的php脚本接收请求

header("Access-Control-Allow-Origin: http://consent.example.com");

并且请求都来自consent.example.com。要明确的是,授权工作正常,请求成功完成,但我不知道为什么需要继续进行选项调用。我觉得浏览器会缓存它。

1 个答案:

答案 0 :(得分:1)

根据RFC 2616 ("Hypertext Transfer Protocol -- HTTP/1.1"),第9.2节:

  

9.2选项

     

...

     

对此方法的响应不可缓存。

HTTP规范明确禁止缓存OPTIONS响应。

值得注意的是,GET响应也没有使用缓存(我看到customers?search=alex每次都是200)。这只是因为服务器选择不为该请求发送304响应,或者您的浏览器不允许服务器通过If-Modified-SinceIf-None-Match请求标头知道它具有缓存副本。