我有一个简单的网站,上面有一个使用 Websockets 的登录表单。虽然它可以在 Firefox 和 Chrome 上正常工作,但没有建立连接,因此无法使用 IE 10 或 11 登录。我使用了 Fiddler,注意到成功连接的结果是 101(在 Chrome 和 Firefox 中),而在 IE 中则是 200。此外,还出现以下消息:
SCRIPT12008: WebSocket Error: Incorrect HTTP response. Status code 200, OK
出现在 IE 控制台中。
这些是 IE、Chrome 和 FF 标头:
GET / HTTP/1.1
Accept: text/html, application/xhtml+xml, */*
Accept-Language: de-DE
User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)
Accept-Encoding: gzip, deflate
Host: test.server.com
DNT: 1
Connection: Keep-Alive
Pragma: no-cache
GET / HTTP/1.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: el,en-US;q=0.8,en;q=0.6
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.116 Safari/537.36
Accept-Encoding: gzip,deflate,sdch
Host: test.server.com
Connection: keep-alive
Cache-Control: no-cache
Pragma: no-cache
Referer: http://test.kolibri.beckipc.io/
Accept-Language: el,en-US;q=0.8,en;q=0.6
GET / HTTP/1.1
Host: test.server.com
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:28.0) Gecko/20100101 Firefox/28.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: de,en-US;q=0.7,en;q=0.3
Accept-Encoding: gzip, deflate
Connection: keep-alive
不知为何,使用 IE 时 nginx 无法正确响应。有什么想法吗?
答案1
经过测试的三个浏览器引擎中有两个运行良好。IE 标头是唯一一个将 Accept-Language 通信标头限制为 de-DE 的浏览器引擎。您是否恰好提供一个版本,而 IE 决定不需要它?毕竟,IE 不会报告问题,而是报告状态代码“200 OK”。
让我重新表述一下上述内容:
在包含表单的网页中,将语言定义为 de-DE
清除 IE 中的缓存
在 IE 中加载步骤 1 中创建的新表单。
这样就行了。(如果这不起作用,请尝试在 IE 中加载原始表单,然后将该浏览器中的语言首选项从 de-DE 更改为 en-US,看看会发生什么。)还有一件事:确保您拥有 Microsoft 的所有最新更新。众所周知,Microsoft 会定期修复错误。祝你好运 :-)