对 cors / ajax 请求的重复 OPTIONS 请求

Repeated OPTIONS requests for cors / ajax requests

在我的网站上,我有一个 auto-suggest 文本输入,可在用户键入时提示结果。结果由对不同域上的 API 的 AJAX 调用提供。这意味着我必须使用 CORS 来允许请求。

一切正常,但每次用户键入一个新字符时,浏览器都会发送一个新的 OPTIONS 请求以确保它已获得授权。

有没有办法解决所有这些重复的选项请求?

我的 php 接收请求的脚本

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

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

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

9.2 OPTIONS

...

Responses to this method are not cacheable.

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

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