面试常被问到HTTP中GET与POST的区别
2016-09-21 本文已影响476人
OneTODO
HTTP协议(HyperText Transfer Protocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传送协议。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)等。
HTTP是一个应用层协议,由请求和响应构成,是一个标准的客户端服务器模型。HTTP是一个无状态的协议。
可以使用chrome浏览器的开发者工具进行抓包
最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数。
搜索一番,基本的答案是
1. GET把参数包含在URL中,POST通过request body传递参数。
2. GET在浏览器回退时是无害的,而POST会再次提交请求。
3. GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。
4. GET请求在URL中传送的参数是有长度限制的,而POST没有。
5. GET比POST更不安全,因为参数直接暴露在URL上
HTTP是基于TCP/IP的关于数据如何在万维网中如何通信的协议。可以在GET加上request body,给POST带上url参数,没有技术问题,可以自行测试一番哈。
如图Postman允许在post增加参数
HTTP只是个行为准则,而TCP才是GET和POST怎么实现的基本。GET和POST本质上就是TCP链接,并无差别。
我觉得这就是面试的一道坑哈。
GET,POST请求过程有些不同:
1. GET请求,浏览器会把http header和data一并发送出去,服务器响应,返回数据;
2. POST请求,浏览器先发送header,服务器响应100,浏览器再发送data,服务器响应,返回数据