HTTP中GET与POST的区别有:1、书签和浏览历史记录不同;2、缓存和服务器日志文件不同;3、浏览器刷新/“返回”按钮时的行为不同等。书签和浏览历史记录不同是指,GET方法将网址参数与网址一起存储,而POST保存的网址不带网址参数。
一、HTTP中GET与POST的区别
1、书签和浏览历史记录不同
- GET:网址参数与网址一起存储
- POST:保存的网址不带网址参数
2、缓存和服务器日志文件不同
- GET:URL 参数以未加密的方式存储
- POST:网址参数不会自动保存
3、浏览器刷新/返回按钮时的行为不同
- GET:不再发送网址参数
- POST:浏览器警告必须重新发送表单数据
4、数据类型
- GET:仅 ASCII 字符
- POST:除 ASCII 字符外的二进制数据
5、数据长度不同
- GET:限制为 URL 的最大长度(2048 个字符)
- POST:无限
6、是否可见
- GET:在地址行中对用户可见
- POST:对用户不可见
二、HTTP中的GET方法
GET方法用来请求访问已被URL识别的资源。指定的资源经服务器端接续后返回内容。也就是说,如果请求的资源是文本,那就保持原样返回;如果像是CGI(Conmmon Gateway Interface,通用网关接口)那样的程序,则返回执行后的输出结果。
get请求的过程:
- 浏览器请求tcp连接(名列前茅次握手)
- 服务器答应进行tcp连接(第二次握手)
- 浏览器确认,并发送get请求头和数据(第三次握手,这个报文比较小,所以http会在此时进行名列前茅次数据发送)
- 服务器返回200 OK响应,也就是说,目测get的总耗是post的2/3左右。
三、HTTP中的POST方法
POST方法用来传输实体的主体虽然用GET方法也可以进行传输实体的主体,但一般不用GET方法进行传输,而是用POST方法,虽说POST的功能与GET很相似,但是POST的主要目的并不是获取相应的主体内容。
post请求的过程:
- 浏览器请求tcp连接(名列前茅次握手)
- 服务器答应进行tcp连接(第二次握手)
- 浏览器确认,并发送post请求头(第三次握手,这个报文比较小,所以http会在此时进行名列前茅次数据发送)
- 服务器返回100 Continue响应
- 浏览器发送数据
- 服务器返回200 OK响应
四、HTTP协议概述
HTTP是一个客户端终端(用户)和服务器端(网站)请求和应答的标准(TCP)。通过使用网页浏览器、网络爬虫或者其它的工具,客户端发起一个HTTP请求到服务器上指定端口(默认端口为80)。我们称这个客户端为用户代理程序(user agent)。应答的服务器上存储着一些资源,比如HTML文件和图像。我们称这个应答服务器为源服务器(origin server)。在用户代理和源服务器中间可能存在多个“中间层”,比如代理服务器、网关或者隧道(tunnel)。
尽管TCP/IP协议是互联网上最流行的应用,HTTP协议中,并没有规定必须使用它或它支持的层。事实上,HTTP可以在任何互联网协议上,或其他网络上实现。HTTP假定其下层协议提供可靠的传输。因此,任何能够提供这种保证的协议都可以被其使用。因此也就是其在TCP/IP协议族使用TCP作为其传输层。
通常,由HTTP客户端发起一个请求,创建一个到服务器指定端口(默认是80端口)的TCP连接。HTTP服务器则在那个端口监听客户端的请求。一旦收到请求,服务器会向客户端返回一个状态,比如”HTTP/1.1 200 OK”,以及返回的内容,如请求的文件、错误消息、或者其它信息。
延伸阅读1:HTTP状态码
- 1xx消息——请求已被服务器接收,继续处理
- 2xx成功——请求已成功被服务器接收、理解、并接受
- 3xx重定向——需要后续操作才能完成这一请求
- 4xx请求错误——请求含有词法错误或者无法被执行
- 5xx服务器错误——服务器在处理某个正确请求时发生错误