【发布时间】:2015-04-28 13:03:03
【问题描述】:
我用 Java 中的 TCP 套接字构建了一个简单的并发 Web 服务器。
当我向我的网络服务器发出 GET 请求时:
它在 Firefox 和 Internet Explorer 上运行良好,html 页面(一个非常简单的页面)加载正常,但在 Chrome 上却不行。
问题是 Chrome 的响应是 200 OK 状态,但 html 页面的内容永远不会加载。在控制台,在网络上,我得到下一个状态字段:
“(失败)net::ERR_CONTENT_LENGTH_MISMATCH”
但 Chrome 控制台中的响应头如下(包含内容长度!!):
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 365
Access-Control-Allow-Origin: *
GET 请求:
GET /example/index.html HTTP/1.1
Host: localhost:32000
Connection: keep-alive
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.115 Safari/537.36
Accept-Encoding: gzip, deflate, sdch
Accept-Language: es-ES,es;q=0.8,en;q=0.6
可能是响应头问题,我尝试过包含 "Access-Control-Allow-Origin: *" 但没有解决。
知道这个问题的根源吗?如果您需要任何网络服务器代码,请不要犹豫,立即索取。
【问题讨论】:
-
FWIW:我在 Chrome 上遇到了同样的问题。切换到https,它工作。切换回http,清除缓存并重新加载-仍然损坏。清除缓存并重新加载(第二次),现在它可以工作了。哎呀!注意:我的服务器使用了不同的技术(node.js 服务于一个大的 xml 文件),这让我怀疑 Chrome 是否有错误。
-
清除缓存并重新加载后,该错误是否仍然存在?在同一网络上的其他机器上呢?
-
@two-bit-fool 这既不是解决方案,也不是我的问题,正如我在回答中解释的那样
-
Chrome 仍然是我心目中的主要嫌疑人,否则您会在其他浏览器中看到该错误。我怀疑您在服务器上所做的更改正在“解决”该错误,因为缓冲的响应在 Chrome 中使用了不同的代码路径。无论哪种方式,很高兴您找到了解决此问题的方法。干杯!
标签: java sockets google-chrome http http-headers