政府网站平台建设与管理以品牌推广为目的的广告网络平台
HTTP(hypertext transport Protocol);超文本传输协议,是浏览器与万维网服务器之间通信的规则。
规定了客户端与服务端之间互相发送内容的格式,客户端发给服务端的叫 请求协议,服务端返回给客户端的为 响应协议。
同时它也是无状态的,客户端向服务端请求资源后,服务端返回资源,两者连接的状态断开(现在一般优化保持 3000ms,keep-alive)。
1. 请求协议
请求,由客户端发送给服务端,分为四部分:请求方法(Request Method)、请求网站(Request URL)、请求头(Request Headers)、请求头(Request Body)。
请求协议格式:
请求首行 # 包括请求方式,路径,协议和版本,如:GET /index.html HTTP/1.1
请求头信息 # 请求头名称:请求头内容,键值对形式
空行 # 与请求体分隔开
请求体 # GET 无请求体,POST 有
1.1 请求方法
请求方法有很多种,最常用的有 GET、POST 请求。
GET 和 POST 请求方法的区别:
- HTTP 默认请求方法,无请求体,请求的数据会包含在 URL 中,数据最大 1k。
- 请求的数据不会包含在 URL中,而是在请求体中,以表单形式传输,大小没有限制。
几种常用的 get 请求:
- 在浏览器地址栏直接输入 url
- 页面上的超链接/图片链接(a 标签)
- 表单默认提交方式,也可以设置为 post
几种常用的 post 请求
- 登录某个网站:需要输入用户名、密码,不可能将这些信息也包含在 URL 中
- 上传文件:POST 请求大小无限制
1.2 请求的网站
URL:统一资源定位符,由协议名://域名:端口/路径 组成,如:http://www.xxx.com:80/index.html
,即我们要请求的资源路径。
1.3 请求头信息
请求头,用来说明服务器要使用的附加信息,我们可以通过以下方式查看:
F12 - Network - 选择相应的页面 - Request Headers
其中 Request Headers 即为请求头信息,以键值对的形式构成,下面简要说明一些常用的头信息:
-
Accept:指定客户端可以接收哪些类型信息,* 代表可以接收任意类型
-
Accept-Encoding:指定客户端支持的压缩格式
-
Accept-Language:指定客户端支持的语言
-
Connection:keep-alive,客户端支持的链接方式,保持一段时间,默认 3000ms
-
Cookie:维持当前会话,是服务器存储在客户端本地的用来跟踪会话的数据,服务器用来保存登录状态信息
-
Host:主机名
-
User-Agent:使服务器能识别客户端使用的操作系统,浏览器信息版本,做爬虫时加上它可以伪装成浏览器。
-
Content-Type:互联网媒体类型,用来表示请求中媒体类型信息,text/html 表示 HTML格式,application/json 表示 json 类型等。更多对应关系见:http://tool/oschina.net/commons
-
Referer:用来标识这个请求从哪个页面发过来,服务器拿到后可以用来在来源统计、防盗链处理等。
1.4 请求体
请求体一般为 POST请求中的表单数据,GET 请求,请求体为空。如果请求体中的中文,则使用 URL 编码,如:username=%E5%BC%A0%E4%B8%89&password=123
当我们登录某个网站之前,填写用户名和密码,以表单的形式将这些数据交给服务器。这时 Content-Type 变为了 application/x-www-form-urlencoded
,我们也可以将 Content-Type 设置为别的形式:
Content-Type | 提交数据方式 |
---|---|
application/x-www-form-urlencoded | 表单数据 |
multipart/form-data | 表单文件上传 |
application/json | 序列化 json 数据 |
text/xml | xml 数据 |
请求体中的字段信息:
- Content-Length:请求体长度,单位字节
- Keyword=hello:请求体内容,hello 为表单中输入的数据,keyword 为表单字段的名字
2. 响应协议
响应协议由服务端返回给客户端,分为:响应状态码(Response Status Code)、响应头(Response Headers)和响应头(Response Body)。
响应协议格式:
响应首行
响应头信息
空行
响应体
2.1 状态码
状态码是服务端的响应状态,通过状态码我们真正了解服务端是否正常给我们返回数据,下面是几种常用的状态码:
- 200:请求成功
- 404:请求资源没有找到
- 500:服务器内部发生错误
- 302 重定向,服务器要求浏览器再重新发现一个请求,服务器会发送一个响应头 Location,指定了新的 URL 地址。
2.2 响应头
包含了服务端的应答信息,如 Content-Type、Server 等,以下为几种常用的头信息:
-
HTTP/1.1 200 OK:HTTP 协议版本,状态码,表示请求成功
-
Date:响应产生的时间,有 8h 偏差(东八区)UTC时间
-
Last-Modified:资源最后修改的实际
-
Content-Encoding:响应内容的压缩格式
-
Server:包含服务器信息,如名称、版本
-
Content-Type:文档类型,即返回的数据类型
-
Set-Cookie:设置 Cookie,告诉浏览器要将次内容放在 Cookies 中,下次请求携带 Cookies 。
-
Expires:响应的过期时间,使代理服务器或浏览器将加载的内容更新到缓存中,再次访问就从缓存中加载,降低服务器负载。
-
X-UA-Compatible:兼容浏览器
2.3 响应体
响应头包含服务端返回给客户端的数据,如果请求的是网页,那么请求体就是 HTML 代码。如果请求的图片,则请求体是二进制数据。
在浏览器的开发者工具中,点击 Network —— Preview 即可看到响应体。