HTTP Developer’s Handbook 中文翻译 Chapter 五:第一节 HTTP请求的语法
原文地址:HTTP Developer’s Handbook 中文翻译 Chapter 5:第一节 HTTP请求的语法 一个Http请求(即由Web客户端发往Web服务器的消息),由以下3部分组成: HTTP请求的第一行总是请求行(request line),请求行指定了请求方法(request method),资源的位置以及使用的HTTP协议的版本。这3个部分之间用空格隔开。例如: 这个例子指定了GET方法,位于/(文档根目录)下的资源以及 HTTP/1.1 版本的协议。 HTTP请求的第二个部分是 HTTP消息头(HTTP headers) 。 消息头包含了那些可以更清楚地解释Web客户端的请求的信息。可以出现在HTTP请求中的消息头有3种类型: 没有规定要求消息头遵循上述顺序。因为实体头是与消息正文相关的头部,所以较少在请求中出现。 Note 这里有一个例子,是作者在Chapter 3中使用他的Galeon 1.2.0浏览器在google中搜索HTTP时,浏览器向google的服务器发送的请求。 拆解来看,以下是该请求的请求行: 请求方法GET, 资源 /search?hl=en&q=HTTP&btnG=Google+Search (一个相对 URL)以及HTTP版本 HTTP/1.1 被空格分隔。此例中,这个URL比 ‘/’ 这个字符包含了更多的关于所请求的资源的附加信息。关键词HTTP被包含在URL中是由于Google的<form>标签使用了GET方法。而使用POST方法会将所需的数据作为HTTP请求的正文来发送。Web开发的新手经常会将这2种方法搞混,关于这2种方法的区别将会在下一节“Request Methods(请求方法)”中更清楚的阐释。 该请求余下的部分就都是消息头了(因为是GET方法所以没有正文内容),按类型来分,以下是通用头部(General headers): 以下是 请求头部(Request headers): 一般来讲是非常容易区分一个头部是属于哪一类的。请求头会指定一些针对HTTP请求的信息,比如User-Agent头部是用来识别Web客户端软件的。通用头部是既能够用于HTTP请求又能够用于HTTP响应的。实体头部则是反应消息正文特征的一些信息。因为本例中的请求没有消息正文,所以它也没有实体头部。 请记住这个HTTP请求,因为它被用于本章的大多数例子。
1
GET / HTTP/1.1
大多数HTTP请求不包含任何正文内容,因为他们的目的通常就是去请求一些内容。然而你将会看到,允许在请求中发送正文内容这种灵活性是非常有用的。尤其是对于需要交互的网站来说,为了交互需要,用户必须能够发送一些数据。
1
GET /search?hl=en&q=HTTP&btnG=Google+Search HTTP/1.1
2
Host: www.google.com
3
User-Agent: Mozilla/5.0 Galeon/1.2.0 (X11; Linux i686; U;) Gecko/20020326
4
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,
5
text/plain;q=0.8, video/x-mng,image/png,image/jpeg,image/gif;q=0.2,
6
text/css,*/*;q=0.1
7
Accept-Language: en
8
Accept-Encoding: gzip, deflate, compress;q=0.9
9
Accept-Charset: ISO-8859-1, utf-8;q=0.66, *;q=0.66
10
Keep-Alive: 300
11
Connection: keep-alive
1
GET /search?hl=en&q=HTTP&btnG=Google+Search HTTP/1.1
1
Keep-Alive: 300
2
Connection: keep-alive
1
Host: www.google.com
2
User-Agent: Mozilla/5.0 Galeon/1.2.0 (X11; Linux i686; U;) Gecko/20020326
3
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,
4
text/plain;q=0.8, video/x-mng,image/png,image/jpeg,image/gif;q=0.2,
5
text/css,*/*;q=0.1
6
Accept-Language: en
7
Accept-Encoding: gzip, deflate, compress;q=0.9
8
Accept-Charset: ISO-8859-1, utf-8;q=0.66, *;q=0.66
转载请注明 转自: HTTP Developer’s Handbook 中文翻译 Chapter 5:第一节 HTTP请求的语法