【发布时间】:2013-03-11 12:13:21
【问题描述】:
我有一个 iPad Safari 在 30 毫秒内发送两个 HTTP 请求(两个不同的 PNG)文件。
我认为即使在 Keep Alive HTTP 1.1 连接上,也应该有明确的请求/响应顺序。
我看到的是 Safari 浏览器在 30 毫秒内发送了两个 GET 请求,而无需等待答案。这会导致某些 Web 服务器出现问题。
情况: 我有一个 HTML5 加载 SVG 并进一步引用其他图像(如 PNG 和 GIF)。问题不是在 iPhone 5 上出现,而是在 iPad 上。
请查看此 wireshark 转储: http://tinyurl.com/c7m37b9 (第 116/117 帧)
iPad (1) 信息: 版本 5.1.1 (9B206) 型号 MB2292FD Safari 5.1
[GET /Licht_3.gif HTTP/1.1
...
User-Agent: Mozilla/5.0 (iPad; CPU OS 5_1_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9B206 Safari/7534.48.3
Accept: */*
...
Accept-Language: de-de
Accept-Encoding: gzip, deflate
Connection: keep-alive]
[GET /Licht_3.gif HTTP/1.1
Host: 192.9.225.251:8081
...
Accept-Language: de-de
Accept-Encoding: gzip, deflate
Connection: keep-alive]
[HTTP/1.1 200 OK
...
Content-Type: image/png
Content-Length: 3921]
【问题讨论】:
-
你确定这就是正在发生的事情,而且它们不仅仅是在wireshark中被错误排序吗?看起来这些请求在 Wireshark Trace 中得到了正确响应。
-
第二个请求是8081端口,第一个请求是哪个端口?默认80?当每个请求针对不同的资源时,一次发送多个请求通常没有问题。不同端口上的请求将显示为对不同资源的请求。
-
是的,这正是问题所在,两个 HTTP GET 请求都是在同一时间(约 30 毫秒)和同一个保持活动状态的套接字(相同的源和目标端口)上发送的。 Web 服务器只在 600 毫秒后响应第一个请求,导致客户端卡住!实际上,我以前从未见过,我想知道问题是来自客户端还是来自服务器?是否符合 HTTP1.1 标准?
标签: http tcp safari wireshark http-1.1