热身篇想要彻底掌握h必须要了解的一些知识点。
browser | 长度限制 |
---|---|
chrome(谷歌) | url长度限制超过8182个字符返回本文开头时列出的错误。 |
Microsoft Internet Explorer(IE浏览器) | url长度限制是2083(2K+53),超过这个限制,则自动截断(若是form提交则提交按钮不起作用) |
firefox(火狐浏览器) | url长度限制为 65 536字符,但实际上有效的URL最大长度不少于100,000个字符。 |
Safari | 长度限制至少为 80 000 字符。 |
Opera 浏览器 | 的url长度限制为190 000 字符。Opera 9 地址栏中输入190 000字符时依然能正常编辑。 |
Status
状态码
状态码 | 解释 |
---|---|
200 | OK 请求成功,一般用于GET和请求状态 |
300 | 如果服务器本身已经有了首选的回馈选择,那么在 Location 中应当指明这个回馈的 URI;浏览器可能会将这个 Location 值作为自动重定向的地址。此外,除非额外指定,否则这个响应也是可缓存的。 |
301 | 被请求的资源已永久移动到新位置,注意:对于某些使用 HTTP/1.0 协议的浏览器,当它们发送的 POST 请求得到了一个301响应的话,接下来的重定向请求将会变成 GET 方式。 |
302 | 请求的资源临时从不同的 URI响应请求。由于这样的重定向是临时的,客户端应当继续向原有地址发送以后的请求。只有在Cache-Control或Expires中进行了指定的情况下,这个响应才是可缓存的。 |
400 | Bad Request客户端请求的语法错误,服务器无法理解 |
401 | Unauthorized 客户要求用户的身份认证 |
402 | Payment RequIred 保留,将来使用 |
403 | Forbidden 服务器理解请求客户端的请求,但是拒绝执行此请求 |
404 | Not Found 服务器无法根据客户端的请求找到字段(网页)。通过此代码,网站 |
405 | Method Not Allowed客户端请求中的方法被禁止 |
415 | 对于当前请求的方法和所请求的资源,请求中提交的实体并不是服务器中所支持的格式,因此请求被拒绝。 |
500 | Internal Sarver Error 服务器内部错误,无法完成请求 |
501 | Internal Implemented 服务器不支持请求的功能,无法完成请求 |
502 | Bad Gateay 作为网关或者代理工作的服务器尝试执行请求时,从远成服务器接收到一个无效的相应 |
504 | Gateway Time-out 充当网关或代理的服务器,危机时从远端服务器获取请求 |
505 | HTTPVersion not supprted服务器不支持请求的HTTP协议的版本,无法完成处理 |
来不及解释了直接上硬货~~~
我们在公司和后端进行联调的时候,POST
和GET
就是我们最常用的请求方式了。
可是你真的了解POST
和GET
请求嘛?
GET | POST | |
---|---|---|
记录缓存 | 请求的参数/记录会被浏览器进行保留历史记录,GET在浏览器回退时是无害的 | POST并不会被保存相对于更安全一些,回退时POST会再次发起请求 |
内存限制 | 由于GET请求参数会在URL上展示,上面也有说道URL有一定的限制,所以也会影响到GET的传参 | POST请求理论上没有限制的,主要是后台服务器做的限制,比如在Tomcat下取消POST大小的限制(Tomcat默认2M) |
安全性 | GET请求方式消息中不能包含实体内容,,所以GET请求的时候可以把参数暴漏在URL上面,如果一些隐私数据就显得不够安全 | POST请求我们可以使用Form表单方式和JSON进行传参 |
收藏书签 | 可以收藏 | 并不会被收藏 |
可见性 | 参数可以被所有人都可见 | 不会展示在URL中 |
美观 | GET请求参数过多的话会显示杂乱不堪不易被理解 | POST可以自定义格式字段等一些信息易读性更高 |
参数类型 | GET只接受ASCII字符 | 而POST没有限制。 |
前方高能总结
请注意请拿起纸巾~~~
HTTP
/HTTPS协议中是基于IP
/TCP
,而POST
和GET
底层也是TCP
/IP
,也可以说是GET
和POST
都是TCP链接,而GET
和POST
能做的事情都是一样的,你要给GET
加上Request Body
和POST
带上URL
参数技术上也是完全可以行得通的~
总结:
GET
与POST
都有自己的语义,不能随便混用。GET
会产生一个TCP数据包,POST产生两个TCP数据包- 对于
GET
方式请求,浏览器会把http Request和Data一起发送出去,服务器响应200(状态码) - 而
POST
,浏览器回先发送Header,服务器响应100 Content,浏览器在发送Data,服务器响应200
(状态码)。也并不是所有浏览器都会在POST中发送两次包,Firefox就只发送一次。 - 据研究,在网络环境好的情况下,发一次包的时间和发两次包的时间差别基本可以无视。而在网络环境差的情况下,两次包的
TCP
在验证数据包完整性上,有非常大的优点。