请同时查看底部的我的更新
我在 Chrome 中执行跨域 jQuery.ajax GET REQUEST 时确实遇到一些问题。
预战的等待时间非常长(长达 20 秒),但在 Firefox 中运行良好。
我尝试了不同的技巧(例如启用异步),但我无法做到这一点。响应是一个 json 对象数组,并且不是很大(只有几个字节)。
问题似乎仅出现在第一次通话时。我做了一个再次执行请求的函数。它由成功处理程序执行。在第一次延迟 12 秒后,请求正常执行。
我已经尝试过不同版本的 jQuery(因为我是第一次使用 2.0.3)。
我登录了服务器。正如想象的那样,他的 OPTION 请求在长达 20 秒的时间内都没有执行。不存在服务器问题。服务器根据延迟准确识别命令并执行 GET 方法。
对于 2014-01-11 14:59:00 加载的页面,我的日志输出如下:
2014-01-11 14:59:14 - log.txt - "OPTIONS /unit/IO/*?_=1389452340572 HTTP/1.1" 200 -
2014-01-11 14:59:14 - log.txt - "GET /unit/IO/*?_=1389452340572 HTTP/1.1" 200 -
2014-01-11 14:59:14 - log.txt - "OPTIONS /unit/IO/*?_=1389452340573 HTTP/1.1" 200 -
2014-01-11 14:59:14 - log.txt - "GET /unit/IO/*?_=1389452340573 HTTP/1.1" 200 -
这是我的 ajax 调用:
$.ajax({
url: <<crossdomain>>,
type: 'GET',
contentType:'application/json',
async:true,
cache:false,
beforeSend: function (request)
{
request.setRequestHeader("Authorization", 'Basic ' + encodedData);
},
success: function(response) {
alert(response)
}
});
请求 header (Chrome):
Accept:*/*
Accept-Encoding:gzip,deflate,sdch
Accept-Language:de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4
Access-Control-Request-Headers:accept, authorization, content-type
Access-Control-Request-Method:GET
Cache-Control:max-age=0
Connection:keep-alive
DNT:1
Host:<<crossdomain>>
Origin:<<thisdomain>>
Referer:<<directpathonthisdomain>>
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36
响应 header (Chrome):
Access-Control-Allow-Headers:Authorization
Access-Control-Allow-Headers:Accept
Access-Control-Allow-Headers:Content-Type
Access-Control-Allow-Headers:Accept-Language
Access-Control-Allow-Methods:POST, GET, OPTIONS
Access-Control-Allow-Origin:*
Cache-Control:no-cache
Content-Type:application/json
Date:Sat, 11 Jan 2014 13:28:32 GMT
Server:Python3.2
这是第一次调用的网络流量:
Chrome:
选项
DNS Lookup: 0 ms
Connecting: 3 ms
**Waiting: 17.44s**
Receiving 2 ms
获取
DNS Lookup: 0 ms
Connecting: 2 ms
Sending: 0 ms
Waiting: 46 ms
Receiving 1 ms
为了比较 Firefox 日志:
选项
DNS Lookup: 0 ms
Waiting: 10 ms
Receiving 5 ms
获取
DNS Lookup: 0 ms
Waiting: 41 ms
Receiving 3 ms
编辑: 如果我直接打开 html 文件 (file:///) 并且不在本地/远程服务器上托管,则没有问题。
编辑2: 它在 Chrome 隐身模式下工作 - 可能是缓存问题?
最佳答案
我也遇到了同样的问题。在 Chrome 高级设置中禁用“预测网络操作以提高页面加载性能”选项后,延迟就消失了。
关于jquery - $ajax 请求待处理 - chrome 缓存问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21063909/