当我在网络浏览器中输入网址http://localhost:8080/?noheaders.c
时,无论浏览器(IE,Chrome或Firefox)如何,G-WAN似乎都会在响应前20秒内阻止。
造成这种情况的原因是什么?
我们如何避免这种情况?
感谢您的见解。
答案 0 :(得分:1)
造成这种情况的原因是什么?
这与G-WAN无关:这是一个HTTP协议问题。
noheaders.c
脚本演示了如何在没有HTTP标头的情况下生成JSON
回复 。此回复应该由浏览器中运行的Javascript
代码提取,请参阅comet.c
示例进行说明。
当存在“Content-Length” HTTP header
时,浏览器不必等待超过加载指定数据量所需的时间
“Content-Length”的缺少 HTTP header
迫使互联网浏览器猜测何时停止等待更多数据(他们等待一段时间) ,没有显示任何内容,然后,在超时后,它们显示他们收到的所有内容。)
我们怎样才能避免这种情况?
使用流式传输和分块编码在this other example中解释了该机制,以防止浏览器阻塞。
未提供“Content-Length”,因为此处的长度未提前知道。 chunked-encoding告诉浏览器,在收到和End-Of-Reply标记之前,他们应该读取更多数据。