接受的答案on this page说我们应该检查\r\n\r\n
和\n\n
的HTTP服务器响应,作为将标题与内容分开的序列。
像:
HTTP/1.1 200 Ok\r\n
Server: AAA\r\n
Cache-Control: no-cache\r\n
Date: Fri, 07 Nov 2014 23:20:27 GMT\r\n
Content-Type: text/html\r\n
Connection: close\r\n\r\n <--------------
或:
HTTP/1.1 200 Ok\r\n
Server: AAA\r\n
Cache-Control: no-cache\r\n
Date: Fri, 07 Nov 2014 23:20:27 GMT\r\n
Content-Type: text/html\r\n
Connection: close\n\n <--------------
在我在Wireshark中看到的所有回复中,服务器使用\r\n\r\n
。
是否真的有必要检查两者?哪些服务器/协议版本将使用\n\n
?
答案 0 :(得分:0)
答案 1 :(得分:0)
我从 \r\n\r\n
开始,但很快发现一些使用 \n\n
的网站。看看像 curl 这样的专业库,他们也会处理 \n\n
,即使它不符合标准。
我真的不知道 curl 代码,但请参阅此处的示例:https://github.com/curl/curl/blob/7a33c4dff985313f60f39fcde2f89d5aa43381c8/lib/http.c#L1406-L1413
/* find the end of the header line */
end = strchr(start, '\r'); /* lines end with CRLF */
if(!end) {
/* in case there's a non-standard compliant line here */
end = strchr(start, '\n');
if(!end)
/* hm, there's no line ending here, use the zero byte! */
end = strchr(start, '\0');
}
看着这一点,我认为即使是 \0\0
也会被处理。
所以: