美文网首页
GET和POST的区别

GET和POST的区别

作者: 痴人会说梦 | 来源:发表于2017-06-08 18:09 被阅读96次

GET和POST长度的限制问题

GET
1.GET是通过URL提交数据,因此GET可提交的数据量就跟URL所能达到的最大长度有直接关系。
2.实际上HTTP协议对URL长度是没有限制的;限制URL长度大多数是浏览器或者服务器的配置参数
POST
1.同样的,HTTP协议没有对POST进行任何限制,一般是受服务器配置限制或者内存大小。
2.PHP下可以修改php.conf的postmaxsize来设置POST的大小。请求header的content-length问题如果有人恶意伪造content-length很大的包头,但实际上发送content-length很小的请求,这样服务器会一直干等,直到超时。当然服务器是可以通过设置来避免该问题的

GET和POST的安全性

1.GET是通过URL方式请求,可以直接看到,明文传输。
2.POST是通过请求header请求,可以开发者工具或者抓包可以看到,同样也是明文的。
3.GET请求会保存在浏览器历史纪录中,还可能会保存在Web的日志中。
GET和POST对服务器的状态根据http的设计,大家在看到get的时候,都期望这个请求对服务器没有修改,看到post的时候,都认为这对服务器产生了修改。

GET幂等,POST不幂等
幂等是指同一个请求方法执行多次和仅执行一次的效果完全相同。
1.按照RFC规范,PUT,DELETE和安全方法都是幂等的。虽说是规范,但服务端实现是否幂等是无法确保的。
2.引入幂等主要是为了处理同一个请求重复发送的情况,比如在请求响应前失去连接,如果方法是幂等的,就可以放心地重发一次请求。这也是浏览器在后退/刷新时遇到POST会给用户提示的原因:POST语义不是幂等的,重复请求可能会带来意想不到的后果。
3.比如在微博这个场景里,GET的语义会被用在「看看我的Timeline上最新的20条微博」这样的场景,而POST的语义会被用在「发微博、评论、点赞」这样的场景中。

总结:
GET的语义是请求获取指定的资源。GET方法是安全、幂等、可缓存的(除非有 Cache-Control Header的约束),GET方法的报文主体没有任何语义。

POST的语义是根据请求负荷(报文主体)对指定的资源做出处理,具体的处理方式视资源类型而不同。POST不安全,不幂等,(大部分实现)不可缓存。

参考:https://www.zhihu.com/question/28586791

相关文章

  • HTTP

    get和post请求的区别 GET参数通过URL传递,POST放在Request body中。GET比POST更不...

  • post And get

    post And get post 与 get 请求的区别: 相同点:post和get都属于tcp协议传输。 po...

  • API Test-基础知识

    1、接口测试的类型:get/post/delete/put 2、post和get的区别: a、get参数写在...

  • http协议,tcp/udp汇总

    GET和POST请求方式的区别? get获取数据,post发送数据 get拼接URL后面,post参数放在body...

  • 实现异步请求的方法

    原生ajax写法: 请求方式:get,post,head,delete,get和post的区别 get将请求的参数...

  • 这份PHP面试题,我只挑重点,且很详细

    基础篇 1 Get 和 POST 的区别 表单提交中get和post方式的区别有5点 get是从服务器上获取数据,...

  • URLConnection以post方式提交数据

    post请求跟get请求的区别 一 ☆☆☆☆☆☆☆和get方式提交数据 区别 路径不同 二 ☆☆☆☆☆☆☆和get...

  • POST和GET的区别

    Post和Get请求的区别GET和POST是HTTP请求的两种基本方法,最直观的区别就是GET把参数包含在URL中...

  • get和post

    HTTP POST和GET的区别 1、HTTP 只有POST和GET 两种命令模式; 2、 POST 是被设计用来...

  • 2018-10-08:数据的增加与修改

    JSP表单 method中的get和post的区别(默认为get) get地址明参,post将参数隐藏 get不支...

网友评论

      本文标题:GET和POST的区别

      本文链接:https://www.haomeiwen.com/subject/kwetqxtx.html