关于HTTP的一点总结(一)—— GET和POST

以前面试时多次被问到过GET和POST的区别,看到HTTP权威指南里这两个方法的内容时,我觉得自己的想法可能有点问题,所以做点总结如下。

关于这两个方法,w3schools 里是这么说的,这和我以前的想法非常吻合:

The GET Method

GET is used to request data from a specified resource.

Note that the query string (name/value pairs) is sent in the URL of a GET request:

/test/demo_form.php?name1=value1&name2=value2

Some other notes on GET requests:

  • GET requests can be cached
  • GET requests remain in the browser history
  • GET requests can be bookmarked
  • GET requests should never be used when dealing with sensitive data
  • GET requests have length restrictions
  • GET requests is only used to request data (not modify)

The POST Method

POST is used to send data to a server to create/update a resource.

The data sent to the server with POST is stored in the request body of the HTTP request:

POST /test/demo_form.php HTTP/1.1
Host: w3schools.com
name1=value1&name2=value2

Some other notes on POST requests:

  • POST requests are never cached
  • POST requests do not remain in the browser history
  • POST requests cannot be bookmarked
  • POST requests have no restrictions on data length

HTTP权威指南里是这么说的:

GET是最常用的方法,通常用于请求服务器发送某个资源。HTTP/1.1要求服务器实现此方法。图3-7显示了一个例子,在这个例子中,客户端用GET方法发起了一次HTTP请求。

GET示例.png

POST方法起初是用来向服务器输入数据的。实际上,通常会用它来支持HTML的表单。表单中填好的数据通常会发送给服务器,然后由服务将它发送到它要去的地方(比如,送到一个服务器网关程序,然后由这个程序对其进行处理)。图3-10显示了一个用POST方法发起HTTP请求 —— 向服务器发送表单数据 —— 的客户端。

POST示例.png

让我产生疑惑的是权威指南里并没有说w3schools里的那些区别,这会让我觉得它们只有语义上的区别 —— GET方法通常用于请求服务器发送某个资源而POST方法用来向服务器输入数据。除此之外别无二致。

w3schools 里说的几点区别又是怎么回事呢?

GET requests have length restrictions / POST requests have no restrictions on data length

关于这一点我查了之后发现,长度限制并不是HTTP协议规定的,而是浏览器和web服务器共同作用的结果。

每种浏览器都有自己的URL长度限制,这一点应该众所周知。但有一点我以前不知道的是,不同的Web服务器(Apache/ngnix/IIS)也会有不同的长度限制,并且根据服务器的处理能力以及设置的不同,也会有不同的作用结果。

GET requests should never be used when dealing with sensitive data

关于这一点,我有一些疑问,如果使用抓包工具或者打开浏览器控制台,POST请求中传递的数据同样可以一览无余。所以我觉得w3schools的这个说法不太严谨。硬要讨论安全性的话,GET请求应该只是看起来比POST请求安全一些。

GET requests can be cached / POST requests are never cached
GET requests remain in the browser history / POST requests do not remain in the browser history
GET requests can be bookmarked / POST requests cannot be bookmarked

关于这几点,应该说是不算区别的区别。因为GET请求的参数作为URL的一部分,在浏览器的作用下, 才有了这几点区别,也不关HTTP什么事。

GET requests is only used to request data (not modify)

我认为这一点也不是绝对的。如果使用GET方法来请求一个服务端接口,该接口也可以在接收到请求时对数据库进行相应修改,这取决于部署在应用服务器上的服务端代码功能。所以我觉得w3schools这么说,应该只是从语义上规范我们最好这么来做。

我不知道HTTP的底层实现里有没有体现“GET requests is only used to request data (not modify)”,或者说,我不知道“GET requests is only used to request data (not modify)”究竟是怎么体现的。如果你知道这一点,或者有其他观点,非常希望能够在评论区里留言!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,711评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,932评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,770评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,799评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,697评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,069评论 1 276
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,535评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,200评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,353评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,290评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,331评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,020评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,610评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,694评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,927评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,330评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,904评论 2 341

推荐阅读更多精彩内容