`
LiZn
  • 浏览: 9831 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
最近访客 更多访客>>
社区版块
存档分类
最新评论

HTTP Developer’s Handbook 中文翻译 Chapter 5:第一节 HTTP请求的语法

 
阅读更多

原文地址:HTTP Developer’s Handbook 中文翻译 Chapter 5:第一节 HTTP请求的语法

一个Http请求(即由Web客户端发往Web服务器的消息),由以下3部分组成:

  • Request line (请求行)
  • HTTP headers (HTTP消息头,以下会简称消息头)
  • Content (消息正文)

HTTP请求的第一行总是请求行(request line),请求行指定了请求方法(request method),资源的位置以及使用的HTTP协议的版本。这3个部分之间用空格隔开。例如:

1 GET / HTTP/1.1

这个例子指定了GET方法,位于/(文档根目录)下的资源以及 HTTP/1.1 版本的协议。

HTTP请求的第二个部分是 HTTP消息头(HTTP headers) 。 消息头包含了那些可以更清楚地解释Web客户端的请求的信息。可以出现在HTTP请求中的消息头有3种类型:

  • General headers (通用的消息头)
  • Request headers (请求头,与请求控制相关的头部)
  • Entity headers (实体头,与消息正文相关的头部)

没有规定要求消息头遵循上述顺序。因为实体头是与消息正文相关的头部,所以较少在请求中出现。

Note
大多数HTTP请求不包含任何正文内容,因为他们的目的通常就是去请求一些内容。然而你将会看到,允许在请求中发送正文内容这种灵活性是非常有用的。尤其是对于需要交互的网站来说,为了交互需要,用户必须能够发送一些数据。

这里有一个例子,是作者在Chapter 3中使用他的Galeon 1.2.0浏览器在google中搜索HTTP时,浏览器向google的服务器发送的请求。

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

请求方法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):

1 Keep-Alive: 300
2 Connection: keep-alive

以下是 请求头部(Request headers):

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请求的信息,比如User-Agent头部是用来识别Web客户端软件的。通用头部是既能够用于HTTP请求又能够用于HTTP响应的。实体头部则是反应消息正文特征的一些信息。因为本例中的请求没有消息正文,所以它也没有实体头部。

请记住这个HTTP请求,因为它被用于本章的大多数例子。

本博客文章由LiZn创作或分享,以创作公用CC 姓名标示-非商业性-相同方式分享 3.0 Unported 授权条款共享。 
转载请注明 转自: HTTP Developer’s Handbook 中文翻译 Chapter 5:第一节 HTTP请求的语法 

1
1
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics