精华内容
下载资源
问答
  • GET POST 请求 区别

    2019-05-23 11:04:47
    GET POST 请求 区别 1 前言2 HTTP请求方法3 标准参考4 副作用和幂等的概念5 技术上的不同6 首部7 GETPOST 报文上的区别 1 前言 众所周知,在我们开发项目的过程中,关于POSTGET请求是我们不得不掌握的知识,...

    1 前言

    众所周知,在我们开发项目的过程中,关于POST与GET请求是我们不得不掌握的知识,那么它们两者之间又有什么区别呢?接下来,我们一起从HTTP报文等角度来探讨学习一下关于两者的不同

    2 HTTP请求方法

    HTTP 定义了一组请求方法, 以表明要对给定资源执行的操作。指示针对给定资源要执行的期望动作. 虽然他们也可以是名词, 但这些请求方法有时被称为HTTP动词. 每一个请求方法都实现了不同的语义, 但一些共同的特征由一组共享:: 例如一个请求方法可以是 safe, idempotent, 或 cacheable.

    方法名称 用法
    GET GET方法请求一个指定资源的表示形式. 使用GET的请求应该只被用于获取数据.
    HEAD HEAD方法请求一个与GET请求的响应相同的响应,但没有响应体.
    POST 用于将实体提交到指定的资源,通常导致在服务器上的状态变化或副作用.
    PUT PUT方法用请求有效载荷替换目标资源的所有当前表示。
    DELETE DELETE方法删除指定的资源。
    CONNECT CONNECT方法建立一个到由目标资源标识的服务器的隧道。
    OPTIONS OPTIONS方法用于描述目标资源的通信选项。
    TRACE TRACE方法沿着到目标资源的路径执行一个消息环回测试。
    PATCH PATCH方法用于对资源应用部分修改。

    3 标准参考

    W3school:http://www.w3school.com.cn/tags/html_ref_httpmethods.asp

    项目 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 中。

    4 副作用和幂等的概念

    副作用指对服务器上的资源做改变,搜索是无副作用的,注册是副作用的。

    幂等指发送 M 和 N 次请求(两者不相同且都大于 1),服务器上资源的状态一致,比如注册 10 个和 11 个帐号是不幂等的,对文章进行更改 10 次和 11 次是幂等的。因为前者是多了一个账号(资源),后者只是更新同一个资源。

    在规范的应用场景上说,Get 多用于无副作用,幂等的场景,例如搜索关键字。Post 多用于副作用,不幂等的场景,例如注册。

    5 技术上的不同

    • Get 请求能缓存,Post 不能
    • Post 相对 Get 安全一点点,因为Get 请求都包含在 URL 里(当然你想写到 body 里也是可以的),且会被浏览器保存历史纪录。Post 不会,但是在抓包的情况下都是一样的。
    • URL有长度限制,会影响 Get 请求,但是这个长度限制是浏览器规定的,不是 RFC 规定的
    • Post 支持更多的编码类型且不对数据类型限制

    6 首部

    首部分为请求首部和响应首部,并且部分首部两种通用,接下来我们就来学习一部分的常用首部。

    1. 通用首部
    通用字段 作用
    Cache-Control 控制缓存的行为
    Connection 浏览器想要优先使用的连接类型,比如 keep-alive
    Date 创建报文时间
    Pragma 报文指令
    Via 代理服务器相关信息
    Transfer-Encoding 传输编码方式
    Upgrade 要求客户端升级协议
    Warning 在内容中可能存在错误
    1. 请求首部
    请求首部 作用
    Accept 能正确接收的媒体类型
    Accept-Charset 能正确接收的字符集
    Accept-Encoding 能正确接收的编码格式列表
    Accept-Language 能正确接收的语言列表
    Expect 期待服务端的指定行为
    From 请求方邮箱地址
    Host 服务器的域名
    If-Match 两端资源标记比较
    If-Modified-Since 本地资源未修改返回 304(比较时间)
    If-None-Match 本地资源未修改返回 304(比较标记)
    User-Agent 客户端信息
    Max-Forwards 限制可被代理及网关转发的次数
    Proxy-Authorization 向代理服务器发送验证信息
    Range 请求某个内容的一部分
    Referer 表示浏览器所访问的前一个页面
    TE 传输编码方式
    1. 响应首部
    响应首部 作用
    Accept-Ranges 是否支持某些种类的范围
    Age 资源在代理缓存中存在的时间
    ETag 资源标识
    Location 客户端重定向到某个 URL
    Proxy-Authenticate 向代理服务器发送验证信息
    Server 服务器名字
    WWW-Authenticate 获取资源需要的验证信息
    1. 实体首部
    实体首部 作用
    Allow 资源的正确请求方式
    Content-Encoding 内容的编码格式
    Content-Language 内容使用的语言
    Content-Length request body 长度
    Content-Location 返回数据的备用地址
    Content-MD5 Base64加密格式的内容 MD5检验值
    Content-Range 内容的位置范围
    Content-Type 内容的媒体类型
    Expires 内容的过期时间
    Last_modified 内容的最后修改时间

    7 GET 和 POST 报文上的区别

    结论:GET 和 POST 方法没有实质区别,只是报文格式不同。

    GET 和 POST 只是 HTTP 协议中两种请求方式,而 HTTP 协议是基于 TCP/IP 的应用层协议,无论 GET 还是 POST,用的都是同一个传输层协议,所以在传输上,没有区别。

    报文格式上,不带参数时,最大区别就是第一行方法名不同

    POST方法请求报文第一行是这样的POST /products/create HTTP/1.1

    GET方法请求报文第一行是这样的 GET /products?name=zs&age=18 HTTP/1.1

    是的,不带参数时他们的区别就仅仅是报文的前几个字符不同而已

    带参数时报文的区别呢? 在约定中,GET 方法的参数应该放在 url 中,POST 方法参数应该放在 body 中

    举个例子,如果参数是 pname='小米9', pprice=3500

    GET 请求方法的报文如下:
    在这里插入图片描述

    POST 请求方法的报文如下:
    在这里插入图片描述

    现在我们知道了两种方法本质上是 TCP 连接,没有差别,也就是说,如果我不按规范来也是可以的。我们可以在 URL 上写参数,然后方法使用 POST;也可以在 Body 写参数,然后方法使用 GET。当然,这需要服务端支持。

    展开全文
  • get post请求区别

    2018-01-02 10:55:44
    From 的getpost方法.在数据传输过程中分别对应了HTTP协议中的GETPOST方法. Get:是以实体的方式得到由请求URI所指定资源的信息,如果请求URI只是一个数据产生过程,那么最终要在响应实体中返回的是处理过程...

    From 的get 和post方法.在数据传输过程中分别对应了HTTP协议中的GET和POST方法.

    • Get:是以实体的方式得到由请求URI所指定资源的信息,如果请求URI只是一个数据产生过程,那么最终要在响应实体中返回的是处理过程的结果所指向的资源,而不是处理过程的描述。
    • Post:用来向目的服务器发出请求,要求它接受被附在请求后的实体,并把它当作请求队列中请求URI所指定资源的附加新子项,Post被设计成用统一的方法实现下列功能
    • 对于 get 方式,服务器端用Request.QueryString获取变量的值,对于 post 方式,服务器端用Request.Form获取提交的数据。
    • get 传送的数据量较小,主要是受URL长度的限制,不能大于2KB。post 传送的数据量较大,一般被默认为不受限制,所以上传文件只能用post。但理论上,IIS4中最大量为80KB,IIS5中为100KB。 用IIS过滤器的只接受get参数,所以一般大型搜索引擎都是用get方式。
    • get请求参数会在地址栏暴露,安全性不好,相反post请求不会将所传参数暴露在地址栏中相对较安全。如果这些数据是中文数据而且是非敏感数据,那么使用 get;如果用户输入的数据不是中文字符而且包含敏感数据,那么还是使用 post 为好。
    • get是从服务器中获取参数,post是上传数据。
    • get是form的默认方法。
    • get限制form表单数据集必须是ASCII字符,而post支持整个ISO10646字符集。(编码)
    展开全文
  • Get and Post”01—使用区别1.GET把参数包含在URL中,POST通过request body传递参数2.GET在浏览器回退时无所谓,POST需要再次提交请求3.GET请求参数会被完整保留在浏览器历史记录里,而POST中...02—请求区别1.GET...

    c98712305638d3af95987cb7e08ece7e.png

     Get and Post

    01

    使用区别

    1.GET把参数包含在URL中,POST通过request body传递参数

    2.GET在浏览器回退时无所谓,POST需要再次提交请求

    3.GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会保留

    4.GET在URL中传递的参数长度有限制,POST没有

    5.GET比POST更不安全,因为参数直接暴露在URL上。

    02

    请求区别

     1.GET会产生一个TCP数据包,GET会把http header和data一起发送出去,服务器响应200

     2.POST会产生两个TCP数据包,POST先发http header再发data

    03

    终极区别

           GET请求是幂等的,POST请求不是。意味着使用GET不会产生副作用,不会改变请求资源的状态。而POST多次请求会改变资源状态,所以不具有幂等性

    展开全文
  • 除了获取网页还有哪些网络...GetPost区别当我们输入网址的时候,后面跟着传给网页的参数,比如请求:httpbin.org这个就是http测试的网站,可以在里面尝试不同的http协议的功能。实现Get请求http://httpbin.org/...

    除了获取网页还有哪些网络请求的知识需要我们掌握呢?

    我们请求网页,平时看到的是浏览器访问,实际在实现中会有不同的请求方式的,那么请求网页的方式最常用到的是Get和Post。

    Get和Post的区别

    当我们输入网址的时候,后面跟着传给网页的参数,比如请求:httpbin.org

    这个就是http测试的网站,可以在里面尝试不同的http协议的功能。

    a3cdb9ee60c1158df443eabe0c48e936.png

    实现Get请求

    http://httpbin.org/get?a=123&b=456 告诉服务器传递a,b的值,浏览器就得知了该信息。

    ad5490b78e58dfaf4fc3a699dfa3a903.png

    注意:

    Get的好处格式非常简单;坏处传出数值的大小限制

    Post请求

    一般提交用户名密码的时候会用到post请求

    比如访问:infoq.com/cn,登录的时候输入信息,发现并没有在地址栏显示用户信息,这种方式为Post方式。

    实现方式

    Get请求from urllib import parse#处理数据from urllib import request#发起请求response2=request.urlopen('http://httpbin.org/get',timeout=1)print(response2.read())

    79f34074a9e2805488a9497f4187472f.png

    Post请求from urllib import parse#处理数据from urllib import request#发起请求data = bytes(parse.urlencode({'world':'hello'}),encoding='utf-8')#封装数据response=request.urlopen('http://httpbin.org/post',data=data)#data=data指定传输的数据print(response.read().decode('utf-8'))

    222661f9348e264947559a15a1a58bf0.png

    演示超时的结果from urllib import parse#处理数据from urllib import request#发起请求Response3=request.urlopen('http://httpbin.org/get',timeout=0.1)print(response3.read())

    df025a6fefd37b112b7ef506afced65b.png

    利用try捕获import urllibimport sockettry:    response3=urllib.request.urlopen('http://httpbin.org/get',timeout=0.1)except urllib.error.URLError as e:    if isinstance(e.reason,socket.timeout):        print("TIME OUT")

    699e4cf37766c9c47b2122597a38f380.png

    展开全文
  • getpost请求区别

    2020-07-08 19:37:19
    getpost请求区别getpost请求区别get和post本质上只有两个区别 getpost请求区别 get和post本质上只有两个区别 请求头不同 post请求中带有body内容,报文中带有Conten-Length和Conten-Type
  • get请求和post请求的详细区别

    万次阅读 多人点赞 2019-06-06 16:29:40
    GET和POST是HTTP请求的...你可能自己写过无数个GETPOST请求,或者已经看过很多权威网站总结出的他们的区别,你非常清楚知道什么时候该用什么。 当你在面试中被问到这个问题,你的内心充满了自信和喜悦。 你轻...
  • Get请求与Post请求区别

    2020-12-18 19:26:13
    Get请求与Post请求区别 首先基于什么前提 什么前提都没有(只考虑语法与理论上的协议) get与post几乎没有区别 基于RFC规范 理论上(Specification): get和post具有相同的语法,但有不同的语义。 get用来获取数据...
  • GET请求与POST请求区别

    2019-09-28 14:51:22
    从三个层面来回答GET请求与POST请求区别 HTTP报文层面: GET请求将请求信息放在URL, POST请求把请求信息放在报文体中. get请求是有长度限制的, post请求无长度限制. 数据库层面: get请求符合幂等性( 对数据库的一...
  • get请求和post请求区别

    2020-03-22 14:47:30
    一、概述 http请求方式有get、post、put、delete等多种,最常用的就是get和post 多种请求方式 二、区别: 1、GET请求一般用去请求获取数据, POST一般作为发送数据到... POST请求传递参数放在Request body中,不会...
  • GetPost请求区别

    2020-06-07 20:38:06
    1、GetPost请求区别和使用场景 2、post适用于表单提交,图片文件上传。 3、post相对于get要安全点点,因为post的是在地址栏不显示的,而且没有大小和长度的限制
  • Get请求和Post请求区别

    2020-11-05 16:35:49
    你可能自己写过无数个GETPOST请求,或者已经看过很多权威网站总结出的他们的区别,你非常清楚知道什么时候该用什么。   当你在面试中被问到这个问题,你的内心充满了自信和喜悦。   你轻轻松松的给...
  • post请求:需要借助工具来发送 get和post区别 1、get使用url或Cookie传参,而post将数据放在body中 2、get的url会有长度上的限制,而post的数据则可以非常大 3、post比get安全,因为数据在地址栏上不可见 4、...
  • GETPOST请求区别

    千次阅读 2019-08-05 10:45:09
    Http报文层面:GET请求信息放在URL,POST放在报文体...GETPOST区别主要有以下几方面: 1、url可见性: get,参数url可见; post,url参数不可见 2、数据传输: get,通过拼接url进行传递参数; post,通...
  • GETPOST请求区别

    2020-08-06 10:30:48
    你可能自己写过无数个GETPOST请求,或者已经看过很多权威网站总结出的他们的区别,你非常清楚知道什么时候该用什么。 当你在面试中被问到这个问题,你的内心充满了自信和喜悦。 你轻轻松松的给出了一个“标准答案...
  • getpost 请求区别

    2020-09-07 17:12:23
    getpost 请求区别? 区别一: get 重点在从服务器上获取资源,post 重点在向服务器发送数据; 区别二: get 传输数据是通过URL 请求 post 传输数据通过Http 的post 机制, 区别三: Get 传输的数据量小,因为受...
  • http请求get,post,put,delete几种方法,常用的getpost区别(getpost都是tcp链接) 1.getpost传参方式不同,get通过url传参,post通过request body传参 2.postget安全,get请求参数暴露 3.get请求在url的长度...
  • GET,POST请求区别

    2020-07-13 19:49:54
    所以本质上来说GETPOST请求是没有区别 的,都是TCP链接。他们能做的事情是一样的。 HTTP协议既然有了这两个方法,就是为了在特定的情况下区分应用。就有了我们所说的GET是获取数据,POST是提交数据的。 2. GET传输...
  • Http之Get/Post请求区别

    2018-08-23 08:59:03
    Http之Get/Post请求区别
  • 前言 前几篇写了Fiddler的一些功能介绍,今天我们一起学习下如何通过fiddler查看get请求和post请求get,post区别get请求1、启动fiddler,抓取安静博客地址2、通过fiddler查看Inspectors中的Raw3、Raw中表示的为...
  • javaweb中Get请求和Post请求区别 Get: 1.传递的参数是通过url链接,别人可以看得到的 ,传递的数据长度有限制,安全性较低。 我们也可以自定义视图解析器 把这个url转发。 Post:1.参数是封装在header上,安全性高...
  • GET请求和POST请求区别GET请求在请求行上提交数据,这种提交方式最终提交的数据会显示在浏览器的地址栏上 POST请求在请求体上提交数据,不会在浏览器的地址栏上显示提交的数据 GET请求在请求行上提交数据,...
  • getpost请求区别

    2018-01-07 17:29:34
    post的语义处理资源是根据请求报文主体,对指定资源做处理,是不安全、不幂等、不可缓存的(大部分); 二、表现形式区别 1、get请求参数是附在url里,以?分割URL和传输数据,参数之间以&相连。如果数据是英文...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,994
精华内容 3,597
关键字:

getpost请求区别