定义
超文本传输协议(英文:HyperText Transfer Protocol,缩写:HTTP)是互联网上应用最为广泛的一种网络协 议。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。通过HTTP或者HTTPS协议请求的资源由 统一资源标识符(Uniform Resource Identifiers,URI)来标识。
交互过程
- 由HTTP客户端发起一个请求,创建一个指向到服务器某个特定端口(默认是80)的 TCP连接,例如:http://localhost:3000 即创建一个指向本地3000端口的TCP连接。
- 一旦服 务器端收到请求,会向客户端返回一个状态码,以及返回客户端请求的内容。
HTTP状态码(英语:HTTP Status Code)是用以表示网页服务器HTTP响应状态的3位数字代码。
常见状态码
HTTP请求消息结构
请求行 +请求头字段 +一个空行+其他消息主体
请求头字段
请求报文是由请求方法,请求URL,协议版本,可选的请求首部字段和内容实体构成的。
请求行和标题必须以作为结尾。空行内必须只有而无其他空格。在HTTP/1.1协议中,所有的请求头,除Host外,都是可选的。
HTTP URL的格式如下: http://host[“:”port][abs_path]
URI,URL,URN是用来识别,定位和命名互联网上的资源
URI:Uniform Resource Identifier,统一资源标识符
URL:Uniform Resource Locator,统一资源定位符
URN:Uniform Resource Name,统一资源名称
消息报头
HTTP/1.1常见请求方法
General Header Fields
有少数报头用于所有的请求和响应消息,但是不用于被传输的实体,只用于传输的消息
Request Header Fields
请求报头允许客户端向服务器端传递请求的附加信息以及客户端自身的信息。
典型的请求信息:
Accept: text/html, application/xhtml+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,zh-TW;q=0.4
Connection:keep-alive
Cookie:connect.sid=s%3AdF5CuLecykHstAVmBnliuGmx.qyOANqn7nqe8rAZEVgPwpAgc2pKkfWgtnhNg7A1CWp0
Host:yuez.me
If-None-Match:"761947465"
Referer:http://yuez.me/
User-Agent:Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.48 Safari/537.36
Response Header Fields
响应报头允许服务器传递不能放在状态中的附加响应信息,以及服务器的信息和对Request-URL所标识资源进行下一步访问的信息。
Entity Header Fields
请求和响应消息都可以传送一个实体,一个实体由实体报头域和实体正文组成,但不是说实体报头域要和实体正文一起发送,可以只发送实体报头域。实体报头定义了实体正文和请求所标识的资源的元信息。
原文链接:http://yuez.me/http-xie-yi-jie-xi/