从Chrome访问时,端口8080上的Python服务器ERR_INVALID_HTTP_RESPONSE

时间:2017-04-17 22:18:53

标签: python google-chrome curl

我们有一个通过Python提供的内部Web服务器,在本周末之前在端口8080上运行没有问题。在本周末进行Chrome更新后,当我们尝试通过Chrome访问网络服务器时,我和我的同事现在收到了ERR_INVALID_HTTP_RESPONSE。此问题似乎特定于Chrome和端口8080.端口8080适用于IE,端口80适用于IE和Chrome,服务器端无需更改。 Web服务器没有在端口80上提供服务,因为它仍处于开发阶段而非生产阶段(这是公司内部服务的标准做法)。

根据一些研究,似乎不同的网站/服务在Chrome已更新时已经出现过这个问题。大多数这些帖子似乎都涉及HTTP / 0.9被降级为坏安全平等 - 无支持桶。我们的服务器正在使用HTTP / 1.0,我也尝试过HTTP / 1.1,看看我们是否遇到了类似的问题。

[<blah>]$ curl --head http://<domain>
HTTP/1.0 200 OK
Server: BaseHTTP/0.3 Python/2.6.6
Date: Mon, 17 Apr 2017 21:53:57 GMT
Content-type: text/html

[<blah>]$ curl --head http://<domain>:8080
HTTP/1.0 200 OK
Server: BaseHTTP/0.3 Python/2.7.13
Date: Mon, 17 Apr 2017 21:54:04 GMT
Content-type: text/html

# after setting handler.protocol_version = 'HTTP/1.1'
[<blah>]$ curl --head http://<domain>:8080
HTTP/1.1 200 OK
Server: BaseHTTP/0.3 Python/2.7.13
Date: Mon, 17 Apr 2017 21:54:57 GMT
Content-type: text/html

curl没有显示任何明显的标题问题(我可以看到)以指出可能的根本原因。 Chrome的开发者控制台也没有提供任何答案。显然,我遗漏了一些微妙的东西,因为浏览器更新似乎不应该完全阻止访问服务器。

1 个答案:

答案 0 :(得分:3)

尝试格式化您的发送数据,如下所示

connection.sendall(b'HTTP/1.0 200 OK\r\nContent-Length: 11\r\nContent-Type: text/html; charset=UTF-8\r\n\r\nHello World\r\n')