- 深入HTTP请求流程
- URL(统一资源定位符)也被称为网页地址,是互联网标准的地址。URL的标准格式如下:
- 协议://服务器IP [:端口]/路径/[?查询]
- HTTP遵循请求(Request)/应答(Response)模型
- HTTP请求
- HTTP请求包括三部分,分别是请求行(请求方法)、请求头(消息报头)和请求正文。面是HTTP请求的一个例子。
- POST /login.php HTTP/1.1 //请求行
- HOST: www . xxser.com //请求头
- User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:15.0)Gecko/20100101 Firefox/15.0 //空白行,代表请求头结束
- Username=admin&password=admin //请求正文
- HTTP请求行的第一行即为请求行,请求行由三部分组成,该行的第一部分说明了该请求是POST请求;该行的第二部分是一个斜杠.(/login.php),用来说明请求的是该域名根目录下的login.php;该行的最后一部分说明使用的是HTTP 1.1版本(另一个可选项是1.0)。
- 第二行至空白行为HTTP中的请求头(也被称为消息头)。其中,HOST代表请求的主机地址,User-Agent 代表浏览器的标识。请求头由客户端自行设定。关于消息头的内容,在后面章节中将会详细介绍。
- HTTP请求的最后一行为请求正文,请求正文是可选的,它最常出现在POST请求方法中。
- HTTP响应
- 与HTTP请求对应的是HTTP响应,HTTP 响应也由三部分内容组成,分别是响应行、响应头(消息报头)和响应正文(消息主题)。下面是一个经典的HTTP响应。
- HTTP/1.1 200 OK //响应行
- Date: Thu, 28 Feb 2013 07:36:47 GMT //响应头
- Server: BwS/1.0
- Content-Length : 4199
- Content-Type : text/html ; charset=utf-8
- Cache-Control: private
- Expires: Thu,28 Feb 2013 07:36:47 GMT
- Content-Encoding: gzip
- Set-Cookie: H_Ps_PSSID=2022_1438_1944_1788; path=/; domain=.xxser.com
- connection: Keep-Alive
- //空白行,代表响应头结束
- <html> //响应正文或者叫消息主题
- -..---
- HTTP响应的第一行为响应行,其中有HTTP版本((HTTP/1.1)、状态码(200)以及消息“OK”。
- 第二行至末尾的空白行为响应头,由服务器向客户端发送。
- 消息报头之后是响应正文,是服务器向客户端发送的HTML数据。
- HTTP请求方法
- GET
- GET方法用于获取请求页面的指定信息(以实体的格式)。如果请求资源为动态脚本(非HTML),那么返回文本是Web容器解析后的HTML源代码,而不是源文件 。
- Index.php?id=1&username=admin //多个参数项以“&”分隔
- 使用GET请求,在服务器端脚本语言中可以选择性的接收参数,一般由开发者内定好的参数项目才会被接收
- HEAD
- HEAD方法除了服务器不能在响应里返回消息主体外,其他都与GET方法相同。
- POST
- GET方法没有请求内容,而POST是有请求内容的。
- POST 请求最多用于向服务器发送大量的数据,GET虽然也能发送数据,但是有大小(长度〉的限制。
- 并且GET请求会将发送的数据显示在浏览器端,而 POST则不会,所以安全性相对来说高一点。
- PUT
- PUT方法用于请求服务器把请求中的实体存储在请求资源下。
- 通常情况下,服务器都会关闭PUT方法,因为它会为服务器建立文件,属于危险的方法之一
- TRACK
- TRACE方法被用于激发一个远程的应用层的请求消息回路,也就是说,回显服务器收到的请求。
- CONNECT
- 用于动态切换到隧道代理
- OPTIONS
- OPTIONS方法是用于请求获得由URI标识的资源在请求/响应的通信过程中可以使用的功能选项。
- GET
- HTTP状态码
- HTTP协议中的状态码由三位数字组成
- 1xx:信息提示,表示请求已被成功接收,继续处理。其范围为100~101。2xx:成功,服务器成功地处理了请求。其范围为200一206。
- 3xx:重定向,重定向状态码用于告诉浏览器客户端,它们访问的资源已被移动,并告诉客户端新的资源地址位置。这时,浏览器将重新对新资源发起请求。其范围为 300~305。
- 4xx:客户端错误状态码,有时客户端会发送一些服务器无法处理的东西,比如格式错误的请求,或者最常见的是,请求一个不存在的URL。其范围为400~415。
- 5xx:有时候客户端发送了一条有效请求,但 Web服务器自身却出错了,可能是Web服务器运行出错了,或者网站都挂了。5XX就是用来描述服务器内部错误的,其范围为500~505。
- 常见状态码
- 200:客户端请求成功,是最常见的状态。302:重定向。
- 404:请求资源不存在,是最常见的状态。
- 400:客户端请求有语法错误,不能被服务器所理解。401:请求未经授权。
- 403:服务器收到请求,但是拒绝提供服务。500:服务器内部错误,是最常见的状态。
- 503:服务器当前不能处理客户端的请求,一段时间后可能恢复正常。
- HTTP协议中的状态码由三位数字组成
- HTTP消息
- HTTP消息又称为HTTP 头(HTTP header),由四部分组成,分别是请求头、响应头、普通头和实体头。
- 请求头
- Host
- Internet主机和端口号
- User-Agent
- 客户端将它的操作系统、浏览器和其他属性告诉服务器
- Referer
- Referer包含一个URL,代表当前访问URL的上一个URL
- Cookie
- 表示请求者身份
- Range
- 多线程下载
- x-forward-for
- 代表请求端的IP,可以有多个,中间以逗号隔开
- Accept-Charst
- 请求报头域用于指定客户端接收的字符集
- Host
- 响应头
- Server
- 服务器所使用的Web服务器名称
- Set-Cookie
- 向客户端设置Cookie,通过查看此头,可以清楚地看到服务器向客户端发送的 Cookie信息
- Last-Modified
- 资源的最后修改时间
- Location
- 服务器通过这个头告诉浏览器去访问哪个页面,这个头通常配合302状态码使用。
- Refresh
- 服务器通过Refresh头告诉浏览器定时刷新浏览器。
- Server
- 普通头
- 有少数报头域用于所有的请求和响应消息,但并不用于被传输的实体
- 实体头
- 请求和响应消息都可以传送一个实体头。实体头定义了关于实体正文和请求所标识的资源的元信息。元信息也就是实体内容的属性,包括实体信息类型、长度、压缩方法、最后一次修改时间等。常见的实体头如下。
- HTTP协议与HTTPS协议的区别
- HTTPS 的安全基础是SSL,即在HTTP下加入SSL层。
- HTTP协议与HTTPS协议的主要区别如下。
- HTTP是超文本传输协议,信息是明文传输,HTTPS 则是具有安全性的SSL加密传输协议。
- HTTP与HTTP协议使用的是完全不同的连接方式,HTTP 采用80端口连接,而HTTP则是443端口。
- HTTPS协议需要到ca申请证书,一般免费证书很少,需要交费,也有些Web容器提供,如TOMCAT。而HTTP协议却不需要。
- ·HTTP连接相对简单,是无状态的,而 HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,相对来说,它要比HTTP协议更安全。
- URL(统一资源定位符)也被称为网页地址,是互联网标准的地址。URL的标准格式如下:
深入HTTP请求流程
最新推荐文章于 2024-04-28 23:08:53 发布