1. 什么是HTTP协议
协议是指计算机通信网络中两台计算机之间进行通信所必须共同遵守的规定或规则,超文本传输协议(HTTP)是一种通信协议,它允许将超文本标记语言(HTML)文档从Web服务器传送到客户端的浏览器。
当我们通过浏览器输入URL后,浏览器给WEB服务器发送了一个Request,然后进行处理,生成响应的Response,并发送给浏览器,浏览器解析Response的HTML,并显示为我们看到的网页。如果通过代理服务器,那么代理服务器就是个中间人的角色。
代理服务器的功能如下:
- 提高访问速度,大多数代理服务器由缓存功能
- 突破限制,就是FQ
- 隐藏访问者的身份
2. URL详解
URL(Uniform Resource Locator) 地址用于描述一个网络上的资源, 基本格式如下:
schema://host[:port#]/path/…/[;url-params][?query-string][#anchor]
schema 指定底层使用的协议,比如http,https,ftp
host http服务器的ip地址或者域名
port# http服务器的默认端口是80,这种情况下可省略
path 服务器中资源的路径
url-params
query-string 发送给http服务器的数据
anchor- 锚
URL的一个例子
http://www.icourse163.org/learn/BIT-1001872001?tid=1001965001#/learn/testlist
schema:http
host:www.icource163.org
port:80
path:/learn/BIT-1001872001
query-string:tid=1001965001
anchor:/learn/testlist
3. HTTP消息的结构
先看Request消息的结构, Request 消息分为3部分,第一部分叫请求行, 第二部分叫http header, 第三部分是body. header和body之间有个空行。
| METHOD URL HTTP/Verson |
| Header-key1: value1 |
| Header-key2: value2 |
| … |
| Request Body |
如果使用的Method是GET,则Body是空的。
再看看Response消息的结构,和Request消息的结构基本一样,status_code是状态码。
| HTTP/Verson status——code message |
| Header-key1: value1 |
| Header-key2: value2 |
| … |
| Request Body |
4. GET和POST方法的区别
二者都可以在发出请求的同时,提交一些数据,不过有以下几方面的不同:
1. 数据存放的位置不同
GET提交的数据会放在URL之后,以?分割URL和传输数据,参数之间以&相连,如
https://cn.bing.com/search?q=firebug+abaci&qs=n
POST方法是把提交的数据放在HTTP包的Body中。
2.数据大小的不同
GET提交的数据大小有限制(因为浏览器对URL的长度有限制),而POST方法提交的数据没有限制。
3. 数据结构不同
GET方式需要使用Request.QueryString来取得变量的值,而POST方式通过Request.Form来获取变量的值。
4. 安全性能不同
GET方式提交数据,会带来安全问题,比如一个登录页面,通过GET方式提交数据时,用户名和密码将出现在URL上,如果页面可以被缓存或者其他人可以访问这台机器,就可以从历史记录获得该用户的账号和密码。
5. PUT和PATCH方法的区别
二者都是向URL位置更新存储一个资源,不过Patch可以局部更新该资源。假设我们有一个UserInfo,里面有userId, userName, userGender等10个字段。可你的编辑功能因为需求,在某个特别的页面里只能修改userName,这时候的更新怎么做?
于是patch诞生,只传一个userName到指定资源去,表示该请求是一个局部更新,后端仅更新接收到的字段。而put虽然也是更新资源,但要求前端提供的一定是一个完整的资源对象。
6. 状态码
Response 消息中的第一行叫做状态行,由HTTP协议版本号, 状态码,状态消息三部分组成。
状态码用来告诉HTTP客户端,HTTP服务器是否产生了预期的Response。
HTTP/1.1中定义了5类状态码, 状态码由三位数字组成,第一个数字定义了响应的类别。
1XX 提示信息 - 表示请求已被成功接收,继续处理
2XX 成功 - 表示请求已被成功接收,理解,接受
3XX 重定向 - 要完成请求必须进行更进一步的处理
4XX 客户端错误 - 请求有语法错误或请求无法实现
5XX 服务器端错误 - 服务器未能实现合法的请求
最常见的就是成功响应状态码200了,这表明该请求被成功地完成,所请求的资源发送回客户端。
<wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">