HTTP协议

客户端连上web服务器后,若想获得web服务器中的某个web资源,需遵守一定的通讯格式,Http协议用于定义客户端与web服务器通讯的格式。HTTP是hypertext transfer protocol(超文本传输协议)的简写,它是TCP/IP协议的一个应用层协议,用于定义WEB浏览器与WEB服务器之间交换数据的格式。

HTTP请求

  • 客户端连上服务器后,向服务器请求某个web资源,称之为客户端向服务器发送了一个HTTP请求,一个完整的HTTP请求包括:一个请求行、若干请求头、实体内容。请求行用于描述客户端的请求方式、请求资源的名称以及使用的HTTP协议版本号。请求头用于描述客户端请求哪台主机以及一些客户端的一些环境信息。例如:
1
2
3
4
5
6
7
8
9
10
11
GET / HTTP/1.1
Host: localhost:8080
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Encoding: gzip, deflate, sdch
Accept-Language: zh-CN,zh;q=0.8,en;q=0.6
Cookie: JSESSIONID=8B8D0E6D210BBD1AD3A1CD058AEF9738

  • 请求行中的GET称之为请求方式,请求方式有:POST、GET、HEAD、OPTIONS、DELETE、TRACE、PUT,常用的是GET和POST。这两种方式的区别是,如果请求方式为GET,可以在URL地址后以?的形式带上给服务器的数据,多个数据之间以&进行分隔。GET方式的特点,在URL地址后附带的参数是有限制的,其数据容量通常不能超过1k。如果请求方式为POST,则可以在请求的实体内容中向服务器发送数据,传送的数据量无限制。

  • HTTP请求中的常用头

    1. Accept: 客户机支持的数据类型
    2. Accept-Charset:客户机采用的编码
    3. Accept-Encoding:客户机支持的数据压缩格式
    4. Accept-Language:客户机的语言环境
    5. Host:要访问的主机名
    6. If-Modified-Since:资源的缓存时间
    7. Referer:从哪个资源来访问服务器的(可用于防盗链)
    8. User-Agent:客户机的软件环境
    9. Cookie:向服务器发送的特定数据
    10. Connection:是否要与服务器保持连接