HTTP协议GET和POST请求的区别

简介:

浏览器中输入网址访问资源一般都是通过GET方式;在FORM提交中,可以通过Method指定提交方式为GET或者POST,默认为GET提交。
Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE。

 

URL全称是资源描述符,可以认为一个URL地址用于描述一个网络上的资源,而HTTP中的GET,POST,PUT,DELETE就对应着对这个资源的查 ,改 ,增 ,删 4个操作。

GET 和 POST请求方法

 

在客户机和服务器之间进行请求-响应时,最常被用到的方法是GET 和 POST。

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

GET一般用于获取/查询资源信息,而POST一般用于更新资源信息

根据HTTP规范,GET用于信息获取,而且应该是安全的和幂等的 。

1.所谓安全的意味着该操作用于获取信息而非修改信息。换句话说,GET请求一般不应产生副作用。就是说,它仅仅是获取资源信息,就像数据库查询一样,不会修改,增加数据,不会影响资源的状态。

2.幂等的意味着对同一URL的多个请求应该返回同样的结果。

幂等 (idempotent、idempotence)是一个数学或计算机学概念,常见于抽象代数中。
幂等有以下几种定义:
对于单目运算,如果一个运算对于在范围内的所有的一个数多次进行该运算所得的结果和进行一次该运算所得的结果是一样的,那么我们就称该运算是幂等的。比如绝对值运算就是一个例子,在实数集中,有abs(a) =abs(abs(a)) 。
对于双目运算,则要求当参与运算的两个值是等值的情况下,如果满足运算结果与参与运算的两个值相等,则称该运算幂等,如求两个数的最大值的函数,有在在实数集中幂等,即max(x,x) = x 。

 

GET 方法

请注意,查询字符串(名称/值对)是在 GET 请求的 URL 中发送的:

1
/test/demo_form.asp?name1=value1&name2=value2

有关 GET 请求的其他一些注释:

  • GET 请求可被缓存
  • GET 请求保留在浏览器历史记录中
  • GET 请求可被收藏为书签
  • GET 请求不应在处理敏感数据时使用
  • GET 请求有长度限制
  • GET 请求只应当用于取回数据

POST 方法

请注意,查询字符串(名称/值对)是在 POST 请求的 HTTP 消息主体中发送的:

1
2
3
POST /test/demo_form.asp HTTP/ 1.1
Host: test.com
name1=value1&name2=value2

有关 POST 请求的其他一些注释:

  • POST 请求不会被缓存
  • POST 请求不会保留在浏览器历史记录中
  • POST 不能被收藏为书签
  • POST 请求对数据长度没有要求

比较 GET 与 POST

下面比较了GET 和 POST方法的一些区别

  GET POST
后退按钮/刷新 无害 数据会被重新提交(浏览器应该告知用户数据会被重新提交)。
书签 可收藏为书签 不可收藏为书签
缓存 能被缓存 不能缓存
编码类型 application/x-www-form-urlencoded application/x-www-form-urlencoded 或 multipart/form-data。为二进制数据使用多重编码。
历史 参数保留在浏览器历史中。 参数不会保存在浏览器历史中。
对数据长度的限制 是的。当发送数据时,GET 方法向 URL 添加数据;URL 的长度是受限制的(URL 的最大长度是 2048 个字符)。 无限制。
对数据类型的限制 只允许 ASCII 字符。 没有限制。也允许二进制数据。
安全性

与 POST 相比,GET 的安全性较差,因为所发送的数据是 URL 的一部分。

在发送密码或其他敏感信息时绝不要使用 GET !

POST 比 GET 更安全,因为参数不会被保存在浏览器历史或 web 服务器日志中。
可见性 数据在 URL 中对所有人都是可见的。 数据不会显示在 URL 中。

 


目录
相关文章
|
3月前
|
安全
HTTP 协议的请求方法
【10月更文挑战第21天】
|
9月前
|
缓存
HTTP协议中,GET和POST有什么区别?分别适用什么场景?
HTTP协议中,GET和POST有什么区别?分别适用什么场景?
153 0
|
9月前
|
Web App开发 缓存 网络协议
HTTP协议请求详解
HTTP协议请求详解
81 0
|
安全
HTTP协议POST请求问题总结
HTTP协议POST请求问题总结
88 0
|
域名解析 Web App开发 缓存
HTTP中GET和POST请求的区别你知道吗?
HTTP中GET和POST请求的区别你知道吗?
138 1
HTTP中GET和POST请求的区别你知道吗?
|
移动开发 网络协议 安全
webscoket和http的区别详解?
webscoket和http的区别详解?
|
安全 网络协议 大数据
HTTP协议中 GET 和 POST的区别(全)
目录前言1. 源码探讨2. 区别 前言 在了解这两个的区别的同时 还需要额外补充一些http协议中其他方法以此了解更加深入 方法 描述 GET 请求指定的页面信息,并返回实体主体 HEAD 类似于 GET 请求,返回的响应没有具体内容,用于获取报头 POST 向指定资源提交数据进行处理请求(例如提交表单或者上传文件),数据被包含在请求体中。POST 请求可能会导致新的资源的建立和/或已有资源的修改 PUT 从客户端向服务器传送的数据取代指定的文档的内容 DELETE 删除指定
158 0
HTTP协议中 GET 和 POST的区别(全)
|
Web App开发 缓存 应用服务中间件
HTTP协议中的GET、POST请求方法的区别
从上面的请求参数可见性我们已经知道 GET请求的所有参数都是在URL中发送的 我们常说的GET请求有数据长度限制,其实那只是浏览器对URL长度的限制 嗯,这里要看清一个点:是浏览器 而不是HTTP协议的规定,同时在web服务器上也有对于长度的限制
259 0
HTTP协议中的GET、POST请求方法的区别
|
Web App开发 缓存 应用服务中间件
HTTP中GET/POST请求的区别
HTTP中GET/POST请求的区别
222 0
HTTP中GET/POST请求的区别
http详解4-http协议和工作流程4形成post请求
http详解4-http协议和工作流程4形成post请求
600 0
http详解4-http协议和工作流程4形成post请求