POST 和 GET 区别

POST 和 GET 区别

POST GET是什么?

POST和GET是HTTP请求的两种方式,都可实现将数据从浏览器向服务器发送带参数的请求。
HTTP请求底层协议都是TCP/IP,也就是说,GET/POST都是TCP链接。GET和POST能做的事情是一样一样的。你要给GET加上request body,给POST带上url参数,技术上是完全行的通的。所以两者没有本质的区别。

HTTP

1.HTTP是什么
HTTP:超文本传输协议。所有的WWW文件都必须遵守这个标准。是基于TCP/IP的关于数据如何在万维网中如何通信的协议。

HTTP向服务器发送请求是TCP连接。HTTP服务器收到请求后向客户端返回一个状态行 比如“HTTP/1.1 200 OK”
2.HTTP请求的组成

HTTP由四部分组成:

请求行(request line):用于说明请求类型、要访问的资源路径、HTTP版本号(GET /index.html HTTP/1.1)
请求头部(header):用于说明服务器要使用的附加信息
一个空行
请求数据(body):任意添加的数据
例:

GET /books/?sex=man&name=Professional HTTP/1.1 
Host: www.wrox.com 
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.6) 
Gecko/20050225 Firefox/1.0.1 
Connection: Keep-Alive
这里是空行

------------------------------------------------------------------------------

POST /index.html HTTP/1.1   请求方法 url 协议/版本号
Host: localhost  主机地址
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:10.0.2) Gecko/20100101 Firefox/10.0.2 发送请求的应用程序名称
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-cn,zh;q=0.5 通知服务端可以发送的语言
Accept-Encoding: gzip, deflate 通知服务端可以发送的数据压缩格式
Connection: keep-alive
Referer: <a target=_blank href="http://localhost/" style="color: rgb(51, 102, 153); text-decoration: none;">http://localhost/</a>
Content-Length:25
Content-Type:application/x-www-form-urlencoded
请求空行 标志着请求头结束,请求正文(请求体)的开始
username=aa&password=1234

常用状态码:
200 (OK): 找到了该资源,并且一切正常。
304 (NOT MODIFIED): 该资源在上次请求之后没有任何修改。这通常用于浏览器的缓存机制。
401 (UNAUTHORIZED): 客户端无权访问该资源.通常会使浏览器要求用户输入用户名和密码,以登录到服务器。
403 (FORBIDDEN): 客户端未能获得授权。这通常是在401之后输入了不正确的用户名或密码。
404 (NOT FOUND): 在指定的位置不存在所申请的资源。

GET POST区别总结:

GET - 从指定的资源请求数据。
POST - 向指定的资源提交要被处理的数据

  1. 最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数。

  2. POST相对于GET来说更加安全

  3. GET回退浏览器无害,POST会再次提交请求(GET方法回退后浏览器再缓存中拿结果,POST每次都会创建新资源)

  4. GET提交的数据大小有限制(是因为浏览器对URL的长度有限制,GET本身没有限制),POST没有

  5. GET可以被保存为书签,POST不可以。

  6. GET能被缓存,POST不能

  7. GET只允许ASCII字符,POST没有限制

  8. GET会保存再浏览器历史记录中,POST不会。

    GET产生一个TCP数据包;POST产生两个TCP数据包。(POST产生俩个数据包不属于必然行为)

    对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);
    而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。
    header 和 body 分开发送是部分浏览器或框架的请求方法,不属于必然行为。

HTTP只是个行为准则,而TCP才是GET和POST怎么实现的基本
两者产生区别的主要原因:
由于HTTP的规定和浏览器/服务器的限制,导致他们体现出一些不同。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值