HTTP协议

Posted 阿Hai

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HTTP协议相关的知识,希望对你有一定的参考价值。

HTTP协议简介

HTTP协议(Hypertext Transfer Protocol,超文本传输协议)是网络应用层的协议,建立在TCP/IP协议基础之上。HTTP协议是可靠的TCP连接,默认端口号为80.

HTTP协议基于客户/服务器模式,客户端主动发出HTTP请求(并且只能由客户端发现请求),服务器端接收到HTTP请求后返回HTTP响应结果。

HTTP协议严格规定了HTTP请求和HTTP响应的格式。

 

HTTP请求

一个HTTP请求由以下几个部分构成:

  请求行:请求方式、URI、HTTP协议版本

  若干个请求头(Request Header)

  实体内容:请求正文(Request Content)

请求正文和最后一个请求头之间有一个空行。

GET /docs/security-howto.html HTTP/1.1
Accept: application/x-ms-application, image/jpeg, application/xaml+xml, image/gif, image/pjpeg, application/x-ms-xbap, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*
Referer: http://localhost:8080/
Accept-Language: zh-CN
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)
Accept-Encoding: gzip, deflate
Host: localhost:8080
Connection: Keep-Alive

  1.请求行:请求方式、URI、HTTP协议版本

    (1)请求方式包括 POST、GET、HEAD、OPTIONS、DELETE、TRACE、PUT

    GET:客户程序可通过此方式访问服务器上的一个文档,服务器把文档发给客户程序。

    POST:客户程序通过此方式发送大量数据给服务器。在HTTP请求中除了要包含要访问的文档的URI外,还包括大量的请求正文,通常是大量的HTML表单数据。

    HEAD:客户程序和服务器之间交流一些内部数据,服务器不会返回具本文档。HEAD一般不单独使用,而作为一种辅助作用。如搜索引擎HEAD请求网页标志信息,HTTP服务器进行安全认证等。

    PUT:客户程序通过此方式上传文档给服务器。

    DELETE:客户程序通过此方式删除服务器上的某个文档。

    常用POST和GET,它们都用于向服务器请求某个WEB资源,区别主要表现在数据传递上:
      GET方式,则可以在请求的URL地址后以?的形式带上交给服务器的数据,多个数据之间以&进行分隔,但附带的参数是有限制的,其数据容量通常不能超过1K。例如:GET /mail/1.html?name=abc&password=xyz HTTP/1.1
               POST方式,则可以在请求的实体内容中向服务器发送数据,Post方式的特点:传送的数据量无限制。

  (2)URI(Universal Resouce Identifier,统一资源标识符)用于标识要访问的网络资源。在HTTP请求中,只要给出相对于服务器根目录的相对目录即可,因此以“/”开头。

  (3)HTTP协议版本: HTTP/1.1或 HTTP/1.0

    在HTTP1.0协议中,服务器返回HTTP响应后即断开,因此客户端与web服务器建立连接后,只能获得一个web资源。

    在HTTP1.1协议中,服务器返回HTTP响应后并不立即断开,因此允许客户端与web服务器建立连接后,在一个连接上获取多个web资源。

2.请求头

  请求头包含客户端向服务器端传递的请求附加信息以及客户端自身的信息。常用的请求头如下:

  Accept:用于指定客户端接受哪些类型的信息。如

    Accept:image/gif,表明客户端希望接受GIF图象格式的资源;

    Accept:text/html,表明客户端希望接受html文本。

  Accept-Charset:指定客户端接受的字符集。如果在请求消息中没有设置这个域,缺省是任何字符集都可以接受。如

    Accept-Charset:iso-8859-1,gb2312.

  Accept-Encoding:用于指定可接受的内容。如果请求消息中没有设置这个域服务器假定客户端对各种内容编码都可以接受。如

    Accept-Encoding:gzip,compress

  Accept-Language:用于指定一种自然语言。如果请求消息中没有设置这个报头域,服务器假定客户端对各种语言都可以接受。如

    Accept-Language:zh-cn

  Authorization:用于证明客户端有权查看某个资源。

    当浏览器访问一个页面时,如果收到服务器的响应代码为401(未授权),可以发送一个包含Authorization请求报头域的请求,要求服务器对其进行验证。

  Host(发送请求时,该报头域是必需的)用于指定被请求资源的Internet主机和端口号。

  User-Agent:允许客户端将它的操作系统、浏览器和其它属性告诉服务器。此域不是必须的。

3.请求正文

  HTTP协议规定,请求头和请求正文之间必须以空行分割(只有CRLF符号的行),用以表示请求头结束,接下来是正文。(CRLF即Carriage Return Linefeed,"\r\n")

  请求正文中可以包含客户以POST方式提交的表单数据。如:username="zhangsan"&&password=000000

 

 

 

以上是关于HTTP协议的主要内容,如果未能解决你的问题,请参考以下文章

怎么用http协议实现安卓数据

CPNtools协议建模安全分析---实例变迁标记

HTTP客户端代码片段

高效Web开发的10个jQuery代码片段

如何从一个片段导航到另一个片段?

这两个代码片段有啥区别?