1、HTTP协议的详细内容
1.1什么是HTTP协议?
- 超文本传输协议
- 浏览器和服务器之间的一 种通讯协议
- 该协议是W3C负责制定的,其实本质上就是数据传送格式提前制定好了。浏览器和服务器都必须按照这种数据格式进行接收和发送。
1.2你们使用HTTP协议版本号是多少?
HTTP1.1
1.3 HTTP协议包括几部分?
- 请求协议:从Browser发送到Server的时候采用的数据传送格式
- 响应协议:从Server发送到Browser的时候采用的数据传送格式
1.4请求协议?
请求协议包括四部分:
- 请求行
- 消息报头
- 空白行
- 请求体
请求行包括: 请求方式URI协议版本号
空白行: 专门用来分离消息报头和请求体的
1.5响应协议?
响应协议包括四部分:
- 状态行
- 响应报头
- 空白行
- 响应体
状态行: 协议版本号状态码状态描述信息
空白行: 分离响应报头和响应体的
响应协议中重点掌握状态码:
- 200响应成功正常结束
- 404 资源未找到
- 500 服务器内部错误
2、GET请求和POST请求的区别
1. 什么情况下浏览器可以发GET请求?什么情况下浏览器可以发POST请求?
只有使用表单form时,并且将form标签的method属性设置为method="post"才能提POST请求,其余剩下所有的请求方式都是基于GET方式的。
2. GET请求和POST请求有什么区别?
-
GET请求在请求行上提交数据,格式:
uri?name=value&name=value&name=value...
这种提交方式最终提交的数据会显示到浏览器的地址栏上 -
POST请求在请求体中提交数据,相对安全,提交格式:
name=value&name=value&name=value...
这种提交方式最终不会再浏览器地址栏上显示 -
POST请求在请求体中提交数据,所以POST请求提交的数据理论上没有长度的限制 [ POST可以提交大数据]
-
GET请求在请求行上提交数据,所以GET请求提交的数据长度有限制,这个限制是浏览器厂商的限制,所以限制也不同,HTTP协议没有规定限制
-
GET请求只能提交字符串数据,POST请求可以提交任何类型的数据,包括视频…,所以文件上传必须使用POST请求提交。
-
GET请求最终的结果会被浏览器缓存收纳。而POST请求最终的结果不会被浏览器缓存。
2.1 为什么GET请求会缓存数据,POST不会缓存?
- GET请求多数情况下是从服务器中读取资源,这个读取的资源在短时间之内是不会发生变化的,所以GET请求最终的结果浏览器缓存起来了。
- POST请求多是为了修改服务器端的资源,而每次修改结果都是不同的,最终结果没有必要波浏览器缓存。
2.2 不想从缓存中拿数据,只想从服务器拿数据怎么办?
浏览器将资源缓存之后,缓存的资源是和某个特定的路径绑定在一起的,只要浏览器再发送这个相同的请求路径,这个时候会去缓存中获取资源,再访问服务器,以这种方式降低服务器的压力,提高用户的体验。
但是有的时候,我们不希望走缓存,希望每一次都访问服务器,可以在请求路径后面添加时间戳,例如:http://ip:port/oa/system/logout ?t imestamp=12312312312312
JS怎么获取毫秒: new Date() .getTime();
3. GET请求和POST请求应当如何选择使用?
- 有敏感数据,必须使用POST
- 传送数据不是普通字符串,必须使用POST
- 传送的数据丰常多,使用POST
- 这个请求是为了修改服务器端资源,使用POST