浅析HTTP中请求GET/POST | 您所在的位置:网站首页 › get请求能传json对象吗 › 浅析HTTP中请求GET/POST |
HTTP(回顾) HTTP是什么 HTTP全称为HyperText Transfer Protocol超文本传输协议(HTTP)的设计目的: 保证客户端与服务器之间的通信HTTP的工作方式 是客户端与服务器之间的请求-响应协议(相当于交互)注:web浏览器可能是客户端,而计算机上的网络应用程序(QQ、百度)也可能作为服务器 举个 : 客户端(浏览器)向服务器提交HTTP请求,服务器收到请求后向客户端返回响应(响应包含关于请求的状态信息以及被请求的内容)两种常见请求方法(动词)在客户端与服务器之间进行请求——响应时,有两种(共是4种)最常用到的请求方法是: GETPOST那什么时候用GET,什么时候用POST共同点首先这两种请求方法(GET和POST)的共同点是:都是将数据传送到服务器区别GETGET:从服务器请求数据后获取服务端数据常见发起GET请求的方式有: URL 、src/href、表单(form)格式: index.php?userName=jack&password=123 语法(key=value&key=value): userName=jack&password=123 叫做查询字符串特点: 参数名与参数值之间没有空格参数值不需要使用单双引号包括具体情况使用GET方法:1.客户端与服务端的交互像是一个提问(如查询操作、搜索操作、读操作) 2.请求是为了查找资源,HTML表单数据仅用来帮助搜索 3.请求结果无持续性的副作用(如进行搜索) 4.收集的数据及HTML表单内的输入字段名称的总长不超过1024个字符 5.获取参数或者短小的内容时用GET,如 ?id=5 或者 ?title=abc&url=http... GET方式提交数据特点:1、get方式在url后面拼接参数,只能以文本的形式传递参数 2、传递的数据量小,4kb左右(不同浏览器会有差异) 3、安全性低,会将信息显示在地址栏 4、速度快,通常用于对安全性要求不高的请求 举个 :GET方法可以携带交互需要的所有数据,当搜索百度或谷歌的时候,点击搜索形成的URL包含了刚才的搜索关键字及相关内容,没有安全需求的请求把信息放URL里是没关系的POSTPOST:就是发送、提交。向服务器提交/发送要被处理的数据。格式: 注意⚠️:与GET不同的是,查询字符串(名称/值)是在 POST 请求的 HTTP 消息主体中发送的: POST /test/demo_form.asp HTTP/1.1Host: http://w3schools.comname1=value1&name2=value2具体情况使用POST方法:1.交互是一个命令或订单(order),比提问包含更多信息 2.交互改变了服务器端的资源并被用户察觉,例如订阅某项服务 3.用户需要对交互产生的结果负责 4.请求的结果有持续性的副作用,例如,数据库内添加新的数据行 5.GET方法可能会产生很长的URL,或许会超过某些浏览器与服务器对URL长度的限制,所以使用POST 7.获取大断的内容用POST,通常表单用 POST 方式提交数据,表单的method必须设置为POST 8.对数据有变更的请求(增删)用post;(比如发贴,回复的form 用的是 POST) POST方式提交数据特点:1、post提交数据相对于get的安全性高一些。(注意:抓包软件也会抓到post的内容,安全性要求高可以进行加密) 2、传递数据量大,请求对数据长度没有要求 3、请求不会被缓存,也不会保留在浏览器的历史记录中 4、用于密码等安全性要求高的场合,提交数据量较大的场合,如上传文件,发布文章等 5、POST方式提交数据上限默认为8M(可以在PHP的配置文件post_max_size选项中修改) 举个 :访问银行网站或请求带有个人隐私的时候,把账户、密码这些放在URL里被人拦截是不安全的, 所以HTTP设计了POST请求,他可以把请求信息(创建资源,资源的内容)放在HTTP请求里总结:GET在浏览器回退时是无害的,而POST会再次提交请求GET产生的URL地址可以被Bookmark,而POST不可以GET请求会被浏览器主动cache,而POST不会,除非手动设置GET请求只能进行url编码,而POST支持多种编码方式GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留GET请求在URL中传送的参数是有长度限制的,而POST没有对参数的数据类型,GET只接受ASCII字符,而POST没有限制GET参数通过URL传递,POST放在Request body中GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息GET和POST还有一个重大区别,简单的说:GET产生一个TCP数据包;POST产生两个TCP数据包1. 在网络环境好的情况下,发一次包的时间和发两次包的时间差别基本可以无视 2.而在网络环境差的情况下,两次包的TCP在验证数据包完整性上,有非常大的优点 2. 并不是所有浏览器都会在POST中发送两次包,Firefox就只发送一次 看完觉得有用请点个赞,谢谢! |
CopyRight 2018-2019 实验室设备网 版权所有 |