对 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-Since
或 If-None-Match
请求让服务器知道它有缓存副本 header.
在我的网站上,我有一个 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-Since
或 If-None-Match
请求让服务器知道它有缓存副本 header.