对 post 和 get 请求的理解
http
http(网络协议,超文本传输协议)协议常见的两种方法就是 POST 和 GET
最直观的区别是GET把参数包含在URL中,POST通过 request body 传递参数
客户端请求 request 消息包括:请求行(request line)、请求头部(header)、空行、请求数据
服务端响应 response 消息包括:状态行、消息报头、空行、响应正文
post 和 get
http 的底层是TCP/IP,get 和 post 请求的底层也是 TCP/IP,则 get 和 post 请求是一样的,也就是说给 post 加上 request boby 和给 get 加上 url 参数也是可以的
区别
请求长度:大多数浏览器都会限制在2K个字节,大多数服务器最多可以处理64K大小的url
重要的区别:get 产生一个TCP数据包,post 产生两个TCP数据包
也就是说对于get请求,浏览器会把http中的head和data一起发出去,服务器响应200;
对于post请求,浏览器先把head发出去,服务器响应100,再把data发出去,服务器响应200
注意:并不是所有的浏览器post请求都会发送两次包,firefox就发送一次
请求方法
http1.0定义了三种请求方法:get、post、head
http1.1新增了五种请求方法:options、delete、put、trace、connect
- get 请求指定的页面信息,并返回实体主体。
- post 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。post 请求可能会导致新的资源的建立或已有资源的修改。
- head 类似于 get 请求,只不过返回的响应中没有具体的内容,用于获取报头
- options 允许客户端查看服务器的性能。
- delete 请求服务器删除指定的页面。
- put 从客户端向服务器传送的数据取代指定的文档的内容。
- trace 回显服务器收到的请求,主要用于测试或诊断。
- connect?HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
|