美文网首页
HTTP协议之——GET与POST

HTTP协议之——GET与POST

作者: 来自地球而已 | 来源:发表于2015-05-08 23:12 被阅读0次

1. 什么是HTTP?

  • 超文本传输协议(HyperText Transfer Protocol -- HTTP)是一个设计来使客户端和服务器顺利进行通讯的协议。
  • HTTP在客户端和服务器之间以request-response protocol(请求-回复协议)工作。

2. 最基本的HTTP的请求方法有以下几种:

方法 描述
GET 从服务器获取数据
HEAD 与GET类似,但服务器只返回HTTP头部信息,没有页面内容
POST 向服务器提交数据
PUT 上传指定URL的描述
DELETE 删除指定资源

3. GET和POST的特点

URL全称是资源描述符,我们可以这样认为:一个URL地址,它用于描述一个网络上的资源,而HTTP中的GET,POST,PUT,DELETE就对应着对这个资源的 4个操作。
即,GET一般用于 获取/查询 资源信息,而POST一般用于 更新 资源信息。

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

幂等(idempotent、idempotence)是一个数学与计算机学概念,常见于抽象代数中。
在编程中.一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。幂等函数,或幂等方法,是指可以使用相同参数重复执行,并能获得相同结果的函数。这些函数不会影响系统状态,也不用担心重复执行会对系统造成改变。

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

* 注意:这里安全的含义仅仅是指是非修改信息

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

GET请求的数据会附在URL之后(就是把数据放置在 HTTP协议头 中),以 ? 分割URL和传输数据,参数之间以 & 相连,如:

login.action?name=hyddd&password=idontknow&verify=%E4%BD%A0%E5%A5%BD

如果数据是英文字母/数字,原样发送,如果是空格,转换为+,如果是中文/其他字符,则直接把字符串用BASE64加密,得出如:%E4%BD%A0%E5%A5%BD,其中%XX中的XX为该符号以16进制表示的ASCII。

特点:

  • GET请求能够被缓存
  • GET请求会保存在浏览器的浏览记录中
  • 以GET请求的URL能够保存为浏览器书签
  • GET请求有长度限制(来自浏览器的限制)
  • GET请求主要用以获取数据
3.2 根据HTTP规范,POST表示可能修改变服务器上的资源的请求

POST把提交的数据放置在是 HTTP包的包体 中。
使用POST方法时,查询字符串在POST信息中 单独存在,和HTTP请求一起发送到服务器:

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

特点:

  • POST请求不能被缓存下来
  • POST请求不会保存在浏览器浏览记录中
  • 以POST请求的URL无法保存为浏览器书签
  • POST请求没有长度限制
  • POST请求主要用以修改数据

4. GET与POST的主要区别

对比 GET POST
点击返回/刷新按钮 没有影响 数据会 重新发送(浏览器将会提示用户“数据被从新提交”)
添加书签 可以 不可以
缓存 可以 不可以
历史记录 没有
长度限制 没有
数据类型限制 只允许ASCII字符类型 没有限制。允许二进制数据
安全性 查询字符串会显示在地址栏的URL中,不安全,请不要使用GET请求提交敏感数据 因为数据不会显示在地址栏中,也不会缓存下来或保存在浏览记录中,所以看POST求情比GET请求安全,但也不是最安全的方式。如需要传送敏感数据,请使用加密方式传输
可见性 查询字符串显示在地址栏的URL中,可见 查询字符串不会显示在地址栏中,不可见

5. 总结

Get是向服务器发 索取 数据的一种请求,而Post是向服务器 提交 数据的一种请求。

[Edited on 2015年5月8日]

相关文章

  • HTTP协议之——GET与POST

    1. 什么是HTTP? 超文本传输协议(HyperText Transfer Protocol -- HTTP)是...

  • 2018-06-14

    get协议与post协议区别 在http协议中,get仅代表向服务器获取数据,post为发送(提交)数据,两者仅仅...

  • Android HttpURLConnection和HttpCl

    HttpURLConnection与HttpClient 1、GET与POST HTTP协议是现在Internet...

  • RESTFUL知识书目录

    RESTFUL是什么 为什么会出现RESTFUL http协议 GET http协议 POST http协议 PU...

  • HTTP协议、GET、POST

    问题 HTTP协议到底长什么样子 HTTP协议怎么从请求端到服务器端经历了什么 HTTP怎么把参数带到服务器的 H...

  • 网络基础和NSURLConnection的使用

    网络基础 URL 不同的协议 http协议 http协议优缺点 GET和POST请求 NSURLConnectio...

  • 常见的面试题汇总(持续更新)

    Get与Post之间的区别 因为Get和Post都是Http里发送协议的两种方法。它们都是TCP连接,所以它们做的...

  • PHP面试题

    1.表单中get与post提交方法的区别? 答:get是发送请求HTTP协议通过url参数传递进行接收,而post...

  • 第一篇php常见笔试题

    1.表单中get与post提交方法的区别? 答:get是发送请求HTTP协议通过url参数传递进行接收,而post...

  • 浅谈Servlet

    post与get之间的区别 他们是Http协议的两种常见请求方式。 数据传递长度:get长度比较小,post没有限...

网友评论

      本文标题:HTTP协议之——GET与POST

      本文链接:https://www.haomeiwen.com/subject/hswwfttx.html