文档章节

HTTP - GET和POST的区别

huangjacky
 huangjacky
发布于 2014/10/12 12:21
字数 611
阅读 17
收藏 0

网上有很多文章介绍这两种HTTP请求的区别,我也不懂,主要还是看了一些文章,在这里写下一些笔记。


  1. 语义不同
    在HTTP协议中,最初规定GET是用来查询或者获取资料,只读,POST用于修改数据,可写。因此可以看到两种方式的使用场景上就有很大的区别,在RESTful中更是强调了这两种HTTP请求方式目的。规定是死的,人是活的,所以很多人为了方便GET也用于修改数据,比如删除某个记录,这样很容易被CSRF,题外话。
  2. 发送数据
    HTTP协议中,GET和POST都可以先服务器发送数据,GET的提交的数据只能在URL中表示,而URL只允许部分可见字符,其他字符都需要转换%xx的形式;POST提交的数据可以在URL中,也可以在BODY里,在BODY里面的数据可以是URLEncoded的普通数据,同样是可以是直接的二进制流数据,这样可以剩下不少流量。一个字节变成%xx,长度就是原来的三倍了。
  3. 长度限制
    在HTTP协议中,GET和POST提交的数据长度是没有限制的。但是一般的浏览器和服务器软件都会限制URL的长度,因为一般服务器会把URL当成字符串来进行使用,一个超长的字符串肯定会影响到服务器的性能。而POST提交数据虽然会比GET的数据大很多,但是一般服务器还是会限制其大小,在nginx中,有一个配置项为client_max_body_size就是来设置POST的body数据大小的,有兴趣的朋友可以试一下。
  4. 安全性
    安全性和这两种方式没有任何关系。数据在HTTP上面走,肯定会被别人嗅探到,关键还是看你对数据的加密程度和算法了。上面说道了GET进行一些写操作容易被csrf,其实只要在GET请求中带上一些防御csrf的措施,那就不会被CSRF攻击了。反之如果使用的是POST方式,但是没有部署anti-CSRF方案的话,同样会被csrf攻击的。

好了,我的笔记写完了,有兴趣的朋友可以拍砖。哈哈,交流学习下。

本文转载自:http://www.cnblogs.com/huangjacky/p/4018139.html

共有 人打赏支持
huangjacky
粉丝 5
博文 19
码字总数 0
作品 0
深圳
高级程序员
私信 提问
HTTP Get和Post的区别 - 说点别的

最近面试被问到get和post的区别,因为觉得这个问题太基础了,勉强的回答了一下(面试没过),回去的路上突然觉得压根没弄明白具体的区别是什么。下面开始分析有不对的地方欢迎指正! 常见区别:...

尚小胖
2016/12/06
35
0
转:99%的人理解错 HTTP 中 GET 与 POST 的区别

转:https://www.oschina.net/news/77354/http-get-post-different 作者:王练 侵删 GET和POST是HTTP请求的两种基本方法,要说它们的区别,接触过WEB开发的人都能说出一二。 最直观的区别就是...

森林范丶
07/04
0
0
99%的人理解错 HTTP 中 GET 与 POST 的区别

GET和POST是HTTP请求的两种基本方法,要说它们的区别,接触过WEB开发的人都能说出一二。 最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数。 你可能自己写过无数个GET和...

王练
2016/09/22
31K
85
99%的人都理解错了HTTP中GET与POST的区别

GET和POST是HTTP请求的两种基本方法,要说它们的区别,接触过WEB开发的人都能说出一二。 最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数。 你可能自己写过无数个GET和...

油焖菠菜
2016/08/18
58
0
你敢在post和get上刁难我,就别怪我装逼了

> 掘金编辑提醒:本文疑似有误,参考 听说「99% 的人都理解错了 HTTP 中 GET 与 POST 的区别」 之前好几次面试都被问到post和get有什么区别,肯定很多同学和我一样说了一大堆什么post比get安...

再这么说就哭了呦!
2017/11/03
0
0

没有更多内容

加载失败,请刷新页面

加载更多

“敏捷开发”怎么就“敏捷”了

什么是敏捷开发 传统的软件开发过程中,我们往往会针对特定的用户需求,采用“瀑布模型”,从用户的需求开始一步步进行需求分析、软件设计、软件开发、软件测试以及软件交付与维护。 然而,这...

SamYjy
37分钟前
2
0
聊聊我怎么系统学习Linux技能并快速提高的

随着电子信息科技时代的发展,学会使用计算机在我们的生活中成为了必不可少的一项技能。而作为计算机中的三大操作系统之一的Linux更是饱受计算机爱好者们的喜爱。今天我们就来和大家一起聊一...

linuxprobe16
49分钟前
3
0
MySQL专题—— 从认识索引到理解索引【索引优化】

认识索引 认识索引是什么东西非常关键,一个非常恰当的比喻就是书的目录页与书的正文内容之间的关系,为了方便查找书中的内容,通过对内容建立索引形成目录。因此,首先你要明白的一点就是,...

架构师springboot
53分钟前
2
0
Java-怎样构造方法和匿名对象

前言 在编写程序时不安全的初始化会导致程序发生发生重大错误。为了使程序可以被安全地初始化,C++引入了构造器(也可以成为构造方法)的概念,这是一个在创建对象时被自动调用的特殊方法。J...

小刀爱编程
今天
2
0
7、MyBaties 增删改

事务 : 从数据库角度出发,完成业务时需要执行的 SQL 集合,统称一个事务. 1、在 mybatis 中默认是关闭了 JDBC 的自动提交功能 每一个 SqlSession 默认都是不自动提交事务. session.commit()提...

KingFightingAn
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部