我知道客户端的HTTP请求是什么样的,但是我很好奇的是服务器使用什么方法来返回页面呢?
客户:
GET /index.html HTTP/1.1 Host foo.com:80
服务器:
Does it perform an HTTP PUT of index.html ? If not, then what? Are HTTP methods used both ways?
如果响应不使用HTTP方法,那么它只是一个包含有效载荷的TCP包(或多个包)? 数据包中是否有HTTP协议特定的信息?
可以使用以下方法之一发送HTTP请求:
发出HTTP GET请求。 此方法使Web服务器返回请求的页面。
发出HTTP HEAD请求。 这个方法使Web服务器只返回响应的头文件而不返回正文。
发出HTTP POST请求。 使用此方法将数据发送到Web服务器(如表单的结果)或上载文件。
发出HTTP PUT请求。 使用此方法将数据上传到Web服务器。 PUT请求不常见。
将指定types的HTTP请求发送到服务器。
服务器接收并解释请求消息后,会响应HTTP响应消息。
Response = Status-Line ; Section 6.1 *(( general-header ; Section 4.5 | response-header ; Section 6.2 | entity-header ) CRLF) ; Section 7.1 CRLF [ message-body ] ; Section 7.2
回复信息来自以下网站: W3.org
我会回答我自己的问题。 不,HTTP方法仅用于请求标头。 状态代码用于响应标题。 我知道我已经看到了双方的标题,应该能够说这个没有看,但我不知道。 在一个有用的论坛上提出这样一个问题(可以很容易地查找的问题)的好处是,有时候您会学到更多的东西,或者获得一些有助于加深理解的视angular。
您的请求必须匹配HTTP协议。
IE的头部必须以空行结束:
GET /index.html HTTP/1.1 Host foo.com:80
注意:每条线都必须由CRLF来完成 ,不仅LF或CR :
00000000 47 45 54 20 2f 20 48 54 54 50 2f 31 2e 30 5c 72 |GET / HTTP/1.0\r| 00000010 5c 6e 48 6f 73 74 3a 20 66 6f 6f 2e 63 6f 6d 3a |\nHost: foo.com:| 00000020 38 30 5c 72 5c 6e 5c 72 5c 6e 0a |80\r\n\r\n.|
服务器的答案可以匹配相同的forms:
标题 – 空行 – 正文
所以你可以通过使用sed来删除头文件,例如:
nc foo.com 80 <<<$'GET / HTTP/1.0\r\nHost: foo.com:80\r\n\r' | sed '1,/^\r\?$/d' > index-of-foo.com.html
或者只转储标题:
nc foo.com 80 <<<$'GET / HTTP/1.0\r\nHost: foo.com:80\r\n\r' | sed '/^\r\?$/q'
你可以在互联网上find你所有的答案:
第一次参考文献: 在w3.org上
或在维基百科:在维基百科上的http
答案头包含了理解如何处理答案所需的全部信息。
Essentialy,有一个内容types ,需要告诉你的浏览器该怎么做。
服务器可能需要处理一些东西来构build他的答案,但是在服务器和客户端之间,只有一个(愚蠢的)TCP连接。
没有什么服务器可以要求客户做…
除了javascript , html5 ( css ), java , flash或其他dilbertlight之类的高级处理堆栈之间的交互式构造。