• 周蓬安.blog的博客—强国博客—人民网 2019-05-10
  • 紫光阁中共中央国家机关工作委员会 2019-05-10
  • 感触名家笔下的端午文化吃香粽原来可以这样文艺 2019-05-09
  • 追梦夺冠游行嘲讽詹皇 百万人面前穿订制T恤羞辱他 2019-04-27
  • 《瘟疫传说》:黑死病恐怖 姐弟在绝望中求生 2019-04-10
  • 陕西国防工业职业技术学院百名大学生志愿者敬老院慰问孤寡老人陕西国防工业职业技术学院百名大学生志愿者敬老院慰问-陕西教育新闻 2019-04-08
  • 西藏拉萨:新家园 新生活 2019-04-08
  • 尊重和保障宗教信仰自由的中国实践 2019-04-06
  • 一敬泯恩仇 俄罗斯队主帅这个动作太暖了 2019-03-20
  • 四大名著剧组首次同台忆往事 经典影视剧如何铸就? 2018-12-07
  • “天眼”凝望 探秘宇宙 2018-12-07
  • 1

    GET 与 POST比较

    Posted by 撒得一地 on 2016年5月9日 in 杂谈
    国外稳定加速器推荐    Express | Vypr

    发起 HTTP 请求有四种基本方法:PUT、DELETE、POST 和 GET,通俗讲可以认为对应于增删改查四个方面。根据 HTTP 规范,GET 请求用于获取信息,是安全和幂等的,这里的安全并不代表不会泄露信息,而是说它用来获取信息,查询数据库,不会影响数据库的数据,也不会影响资源的状态;POST 请求则有可能会修改服务器上数据库的数据和资源的状态。

    对于 <form></form> 标签,其 action 属性的默认值是 GET,可以修改为 POST。使用 GET 时,表单数据中的数据会被转义并以查询字符串的形式追加到 URL 的尾部;使用 POST 时,表单数据会依附请求体发送给服务器。

    下面的表格从多方面比较了两者的差异:

    维度 GET(HTTP) POST(HTTP)
    历史记录 由于数据被添加到了 URL 中,所以会保留在浏览器的历史记录之中 数据不会保留在浏览器的历史记录之中
    书签 可收藏为书签 不可收藏为书签
    后退和重新提交 如果 HTML 被浏览器缓存了,则重新执行 GET 请求可能不会向服务器重新提交数据 浏览器应该提醒用户:数据需要重新提交
    编码格式 “application/x-www-form-urlencoded” “multipart/form-data”(主要用于二进制数据)或 “application/x-www-form-urlencoded”
    参数 长度受限于 URL 的长度,通常在 2K 以内,具体长度取决于浏览器和服务器 可发送参数,包括上传的文件等
    是否可以修改 可被脚本修改 比较难修改
    数据类型是否有限制 只接受 ASCII 字符,其他字符会被转义 无限制,可接收二进制数据
    安全性 GET 相比于 POST 的安全性低,因为发送的数据在 URL 中可见,且可以被浏览器历史记录、服务器日志记录 POST 的参数不会被浏览器历史记录和服务器日记记录
    数据长度限制 受限于 URL 的长度,通常小于 2K,具体限制取决于浏览器和服务器 无限制,实际上也受限于服务器,但相比 GET 要长很多
    可用性 GET 请求不应该用于发送密码等私密信息 POST 请求可用于发送密码等私密信息
    可见性 GET 请求对任何人都可见并且有长度限制 POST 请求的数据不会显示在 URL 中
    缓存 可被缓存 不可被缓存

    优点和缺点

    当使用 GET 请求发送表单数据时:

    • 表单数据只能是 ASCII 字符,其他字符需要被转义为 ASCII 格式,但 POST 请求可以处理二进制数据、图片和其他文件
    • 所有的表单数据对于 URL 都是可见的,而且会被缓存在浏览器的历史记录中,降低了安全性
    • GET 请求的一个优势是表单数据可以被收藏为书签,也可以直接用于填充表单数据
    • 表单数据的长度会受到 URL 长度的限制
    • 易于遭受脚本攻击

    服务器端

    由于 GET 和 POST 对数据的编码方式不同,所以在服务端解码数据的方式也不同。在 ASP 中,服务端使用 Request.QueryString 获取 GET 请求参数,使用 Request.Form 获取 POST 请求参数。

    HTTPS

    使用 HTTPS 发起 GET 请求是否会更安全些呢?我们就做如下的请求来回答这一问题:

    GET https://www.example.com/login.php?user=mickey&passwd=mini
    

    假设有人监视了这一 GET 请求,那么他只会看到如下信息:

    • 这是一个 HTTPS 链接
    • 域名 www.example.com
    • 请求的长度
    • 响应的长度

    URL 路径以及查询字符串都是不可见的。由此可见,在这些方面,GET 请求和 POST 请求的安全性相同。但是,浏览器仍然会记录 URL,所以无论是 HTTP 还是 HTTPS,使用 GET 发送敏感信息仍是不安全的。

    原文://pinggod.com/2016/GET-vs-POST/

    上一篇:

    下一篇:

    相关推荐

    1 Comment

    发表评论

    电子邮件地址不会被公开。 必填项已用*标注

    6 + 4 = ?

    网站地图|广东快乐10分开奖直播

    Copyright © 2015-2019 广东快乐10分开奖直播 All rights reserved.
    闽ICP备15015576号-1,版权所有?psz.

  • 周蓬安.blog的博客—强国博客—人民网 2019-05-10
  • 紫光阁中共中央国家机关工作委员会 2019-05-10
  • 感触名家笔下的端午文化吃香粽原来可以这样文艺 2019-05-09
  • 追梦夺冠游行嘲讽詹皇 百万人面前穿订制T恤羞辱他 2019-04-27
  • 《瘟疫传说》:黑死病恐怖 姐弟在绝望中求生 2019-04-10
  • 陕西国防工业职业技术学院百名大学生志愿者敬老院慰问孤寡老人陕西国防工业职业技术学院百名大学生志愿者敬老院慰问-陕西教育新闻 2019-04-08
  • 西藏拉萨:新家园 新生活 2019-04-08
  • 尊重和保障宗教信仰自由的中国实践 2019-04-06
  • 一敬泯恩仇 俄罗斯队主帅这个动作太暖了 2019-03-20
  • 四大名著剧组首次同台忆往事 经典影视剧如何铸就? 2018-12-07
  • “天眼”凝望 探秘宇宙 2018-12-07
  • 2013福彩3d开奖号码 欧冠总进球最新排名 澳门五分彩开奖官网 足球比分 幸运28俱乐部 江西新时时彩开奖结果 福利彩票体育彩票开奖结果查询 真人二八杠 777福彩3d走势图 现场报码开奖直播 体彩p3最近10期试机号信息网 足彩赔率 足彩进球彩怎么买 彩票娱乐平台 时时彩走势图龙虎和 北京体育彩票投注站