我想知道,例如,通过 get 请求请求网页的客户端如何准确知道何时收到了所有请求的数据,以及使用 https 和 http 示例是否没有更多数据?
谢谢
答案1
HTTP 和 HTTPS 之间没有区别,因为 HTTPS 只是通过 TLS 隧道传输的 HTTP。
回答您的问题:如果服务器发送Content-Lenght: x
标头,则响应主体的尺寸应该正好是 x 个八位字节(字节),如果服务器不发送此标头,则情况会有所不同:
对于 HTTP 1.0,响应主体在服务器关闭连接后肯定会终止。对于 HTTP 1.1,情况更加复杂,因为服务器可以使用分块编码:http://greenbytes.de/tech/webdav/rfc2616.html#rfc.section.3.6.1
答案2
参考 HTTP 交换示例
HTTP 交换示例
要检索 URL 处的文件
http://www.somehost.com/path/file.html
首先打开一个套接字到主机 www.somehost.com,端口 80(使用默认端口 80,因为 URL 中未指定)。然后,通过套接字发送类似以下内容:
GET /path/file.html HTTP/1.0 From: [email protected] User-Agent: HTTPTool/1.0 [blank line here]
服务器应通过相同的套接字返回类似下面的内容作为响应:
HTTP/1.0 200 OK Date: Fri, 31 Dec 1999 23:59:59 GMT Content-Type: text/html Content-Length: 1354 <html> <body> <h1>Happy New Millennium!</h1> (more file contents) . . . </body> </html>
发送响应后,服务器关闭套接字。