我写了一个小的“网络服务器”,它重放了对所有内容的预制回复。在这种情况下:
HTTP/1.1 404 Not Found\r\n
\r\n
以下客户端代码挂起,直到TCP超时开始:
using (WebResponse response = WebRequest.Create(url).GetResponse()) { }
我与Wireshark进行了对话,所有数据都被正确发送和接收。 GetResponse
收到上述回复后会一直等待。但它不应该 - 这是一个有效的HTTP响应,对吧?怎么了?
当我向响应添加任何内容时,一切都按预期工作。
答案 0 :(得分:1)
我怀疑客户端因缺少Content-Length
标头而感到困惑 - 它不知道它可能收到多少内容,所以它正在等待服务器关闭连接,也没有发生。
尝试添加
Content-Length: 0
到响应标题。