http的get/post区别

请求参数的传递方式:

GET请求,请求的数据会附加在URL之后,以?分割URL和传输数据,多个参数用&连接。URL的编码格式采用的是ASCII编码,而不是uniclde,即是说所有的非ASCII字符都要编码之后再传输。

POST请求:POST请求会把请求的数据放置在HTTP请求包的包体中,采用的是uniclde编码。上面的item=bandsaw就是实际的传输数据。

因此,GET请求的数据会暴露在地址栏中,而POST请求则不会。

传输数据的大小

在HTTP规范中,没有对URL的长度和传输的数据大小进行限制。但是在实际开发过程中,对于GET,特定的浏览器和服务器对URL的长度有限制。因此,在使用GET请求时,传输数据会受到览器和服务器对URL长度的限制。对于POST,由于不是URL传值,理论上是不会受限制的,但是实际上各个服务器会规定对POST提交数据大小进行限制,Apache、IIS都有各自的配置。

安全性

POST的安全性比GET的高。这里的安全是指真正的安全,而不同于上面GET提到的安全方法中的安全,上面提到的安全仅仅是不修改服务器的数据。比如,在进行登录操作,通过GET请求,用户名和密码都会暴露再URL上,因为登录页面有可能被浏览器缓存以及其他人查看浏览器的历史记录的原因,此时的用户名和密码就很容易被他人拿到了。除此之外,GET请求提交的数据还可能会造成Cross-site request frogery攻击。但这个安全也仅仅是相对的安全一点。虽然我们没法直接拿到post请求的参数,但是随便一款数据抓包软件就可以截取到post请求所传送的参数。因此:

请求缓存:GET 会被缓存,而post不会 原因就是get是url的请求,没有请求体!上哪缓存去!

收藏书签:GET可以,而POST不能 原因还是因为url可以收藏,请求体上哪收藏!

保留浏览器历史记录:GET可以,而POST不能 原因还是因为get的url请求!

总之,缓存,书签、浏览记录这些功能对信息安全要求并不高,所以作为URL请求的get请求可以被实现,而以URL+数据body形式的post请求则不能,否则就失去了信息安全的保障。

原创文章 118 获赞 149 访问量 9万+

猜你喜欢

转载自blog.csdn.net/haoyuegongzi/article/details/105808463
今日推荐