服务器通常在响应中使用哪些 HTTP 方法(如果有)

服务器通常在响应中使用哪些 HTTP 方法(如果有)

我了解从客户端来看 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 协议特定信息?

答案1

可以使用以下方法之一发送 HTTP 请求:

> 获取()

发出 HTTP GET 请求。此方法使 Web 服务器返回所请求的页面。

> 头()

发出 HTTP HEAD 请求。此方法使 Web 服务器仅返回响应的标头,而不返回任何正文。

> 发布()

发出 HTTP POST 请求。使用此方法将数据(例如表单结果)发送到 Web 服务器,或上传文件。

>Put()

发出 HTTP PUT 请求。使用此方法将数据上传到 Web 服务器。PUT 请求并不常见。

> 发送()

向服务器发送指定类型的 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网站

答案2

我会回答我自己的问题。不,HTTP 方法仅用于请求标头。状态代码用于响应标头。我知道我已经查看了双方的标头,应该能够不查找就说出这一点,但我不确定。在有用的论坛上提出这样的问题(可以相当容易地查找)的好处是,有时您会学到一些额外的东西,或者获得一些有助于加深理解的观点。

答案3

第一的

您的请求必须符合 HTTP 协议。

即你的标题必须以空行结束:

GET /index.html HTTP/1.1
Host foo.com:80
 

注意:每行必须以回车换行符, 不仅如果也不仅仅是碳排放

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.|

服务器的答案可以匹配相同的形式:

标题 - 空行 - 正文

因此,您可以使用删除标题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'

你可以在网上找到所有答案:

第一个参考文档:在 w3.org 上

或者参见维基百科:维基百科上的 http

有什麼解答方法?

答案的标题确实包含了了解如何处理答案所需的所有信息。

本质上,有一个内容类型,需要告诉您的浏览器如何处理该信息。

服务器可能需要处理一些内容来构建其答案,但在服务器和客户端之间只有一个(愚蠢的) TCP 连接。

服务器无法要求客户端做任何事情......

除了高级处理堆栈之间的交互构造之外,例如JavaScript的HTML5 教程样式表),Java 语言闪光或其他呆伯特之光

相关内容