记得第一次面试时候让我讲讲http包含哪些部分,那时候对于http一知半解,就回答有hender,body,看到面试官失望的眼神就悔不当初,之前一直觉得这些都是概念性的东西不必太深入。
随着将近一年的工作开发,知道http的系统知识还是对开发很有帮助的,今天这篇文章就是对http请求有一个系统的总结。
网络有七层协议,但是实际中常说的是四层,物理层,网络层,传输层,应用层。我们今天要讲的http请求就是在应用层。其中post和get请求就是常见的两种方法。
post会发送两次请求,第一次发送header如果服务器返回200,接着继续发送body。
get请求参数放在url后面,post传参参数在body中
总结一下:1.GET在浏览器回退时是无害的,而POST会再次提交请求。2.GET产生的URL地址可以被Bookmark,而POST不可以。3.GET请求会被浏览器主动cache,而POST不会,除非手动设置。4.GET请求只能进行url编码,而POST支持多种编码方式。5.GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。6.GET请求在URL中传送的参数是有长度限制的,而POST没有。7.对参数的数据类型,GET只接受ASCII字符,而POST没有限制。8.GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息。9.GET参数通过URL传递,POST放在Request body中。
题外话:公众号【程序员田同学】 一个专职程序员兼业余写手,分享有趣又有料的内容,欢迎关注。