Http的首部和载荷的分割符是"\r\n"还是"\n\n"

Http的首部和载荷的分割符是"\r\n"还是"\n\n"

看 mozilla 的 HTML文档 的时候,并没有提到起始行、请求头、空行、消息体中间的分隔符应该用 "\r\n" 还是 "\n\n"

又看到下面两篇文章,用 "\r\n" 还是 "\n\n" 都有!
How To Use Linux epoll with Python

import socket

EOL1 = b'\n\n'

EOL2 = b'\n\r\n'

response = b'HTTP/1.0 200 OK\r\nDate: Mon, 1 Jan 1996 01:01:01 GMT\r\n'

response += b'Content-Type: text/plain\r\nContent-Length: 13\r\n\r\n'

response += b'Hello, world!'

serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

serversocket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)

serversocket.bind(('0.0.0.0', 8080))

serversocket.listen(1)

connectionclient, address = serversocket.accept()

request = b''

while EOL1 not in request and EOL2 not in request:

request += connectionclient.recv(1024)

print(request.decode())

connectionclient.send(response)

connectionclient.close()

serversocket.close()

Http的首部和载荷的分割符是"\r\n"还是"\n\n"

无意中我在度娘上漫无目的建索有用的信息时,发现有人把Http的首部和载荷分割符写作“\n\n”,但是我记得这个分割应该是"\r\n"(CRLF行),于是司马当活马试了一下,当我把程序再次烧录后,我看到了等待已久http/1.x 200 ok(终于可以直面产品狗了....),在又增加了应用层代码后,终于顺利的完成了这个项目。
————————————————
版权声明:本文为CSDN博主「火云邪神第二」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/aa16222...

请问用 "\r\n" 还是 "\n\n" 是未定义行为吗?取决于具体的浏览器、服务器实现是吗?


回答:

\r\n 在 RFC 2616 的 2.2 章节中有定义的。

HTTP/1.1 defines the sequence CR LF as the end-of-line marker for all
protocol elements except the entity-body (see appendix 19.3 for
tolerant applications). The end-of-line marker within an entity-body
is defined by its associated media type, as described in section 3.7.

以上是 Http的首部和载荷的分割符是"\r\n"还是"\n\n" 的全部内容, 来源链接: utcz.com/p/938254.html

回到顶部