get 订阅
get,英语单词,主要用作名词、及物动词、不及物动词,作名词时意为“生殖;幼兽”。作及物动词时意为“使得;获得;受到;变成”。作不及物动词时意为“成为;变得;到达”。 展开全文
get,英语单词,主要用作名词、及物动词、不及物动词,作名词时意为“生殖;幼兽”。作及物动词时意为“使得;获得;受到;变成”。作不及物动词时意为“成为;变得;到达”。
信息
英式读音
[ɡet]
美式读音
[ɡet]
词    性
名词、及物动词、不及物动词
外文名
get
get短语搭配
get to开始 ; 接触 ; 达到get along相处 ; 进展 ; 相处融洽 ; 过活get going开始 ; 动手 ; 赶快 ; 开始工作get angry生气 ; 变得生气 ; 变脸get backers闪灵二人组 ; 美堂蛮 ; 闪灵2人组get rolling动手 ; 开始Get Ya李孝利 ; 白衣版 ; 红衣版get set准备好开始 ; 预备开始 ; 预备 ; 装置Get Feedback寻求反馈 ; 集思广益 ; 获得反馈 ; 得到反馈 [1]  get out让你出去
收起全文
精华内容
下载资源
问答
  • GET 和 POST 的区别

    万次阅读 多人点赞 2019-04-07 22:30:29
    GET 方法的特点 POST 方法的特点 GET 和 POST 的区别 二、HTTP 的请求报文 首先我们要解决的第一个问题是:GET 和 POST 是什么? GET 和 POST 其实都是 HTTP 的请求方法。除了这 2 个请求方法之外,HTTP 还有 HEAD...

    一、概述

    本文的内容源自其他博客的总结,属于笔者的读书笔记,结构如下:

    • HTTP 的请求报文
    • GET 方法的特点
    • POST 方法的特点
    • GET 和 POST 的区别

    二、HTTP 的请求报文

    首先我们要解决的第一个问题是:GET 和 POST 是什么?

    GET 和 POST 其实都是 HTTP 的请求方法。除了这 2 个请求方法之外,HTTP 还有 HEAD、PUT、DELETE、TRACE、CONNECT、OPTIONS 这 6 个请求方法。所以HTTP 的请求方法共计有 8 种,它们的描述如下所示:

    表格数据来源:菜鸟教程

    请求方法描述
    GET请求指定的页面信息,并返回实体主体。
    POST向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。
    HEAD类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头。
    PUT从客户端向服务器传送的数据取代指定的文档的内容。
    DELETE请求服务器删除指定的页面。
    TRACE回显服务器收到的请求,主要用于测试或诊断。
    CONNECTHTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
    OPTIONS允许客户端查看服务器的性能。

    接下来我们解决第二个问题:请求方法如何使用?

    要解决这个问题,我们首先需要了解 HTTP 的请求报文结构:
    在这里插入图片描述
    可以看到 HTTP 的请求报文由三部分构成:

    • 请求行:由请求方法(Method)、URL 字段和 HTTP 的协议版本组成,注意其中的空格、回车符和换行符均不可省略,所以我们的请求方法实际上就是位于请求行中的了。
    • 请求头部:位于请求行之后,个数可以为 0~若干个,每个请求头部都包含一个头部字段名和一个值,它们之间用冒号 ":" 分隔,在最后用回车符和换行符表示结束。
    • 请求数据:如果请求方法为 GET,那么请求数据为空。它主要是在 POST 中进行使用,适用于需要填表单(FORM)的场景。

    我们通过一个实际的例子来看看 HTTP 的 GET 请求报文是什么样的,我们这里以访问 https://api.github.com/search/users?q=JakeWharton 为例,通过抓包我们得到的请求报文如下所示:

    GET /search/users?q=JakeWharton HTTP/1.1
    Host: api.github.com
    Connection: keep-alive
    Upgrade-Insecure-Requests: 1
    User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3
    Accept-Encoding: gzip, deflate, br
    Accept-Language: zh-CN,zh;q=0.9
    Cookie: _octo=GH1.1.1623908978.1549006668; _ga=GA1.2.548087391.1549006688; logged_in=yes; dotcom_user=GoMarck; _gid=GA1.2.17634150.1554639136; _gat=1
    

    我们重点看到请求行:

    GET /search/users?q=JakeWharton HTTP/1.1

    可以看到请求方法用的是 GET 请求,URL为 /search/users?q=JakeWharton,协议为 HTTP1.1。

    请求行下面部分全都是请求头部,我们可以看到 host 为 api.github.com,连接方式为长连接等信息。值得注意的是我们这个例子中是不存在请求数据的。


    接下来我们在来看一下 POST 请求的报文(该例子源自其他博客):

    POST / HTTP/1.1
    Host: www.wrox.com
    User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.6)
    Gecko/20050225 Firefox/1.0.1
    Content-Type: application/x-www-form-urlencoded
    Content-Length: 40
    Connection: Keep-Alive
    
    name=Professional%20Ajax&publisher=Wiley
    

    可以看到请求行中请求方法为 POST,URL 为空,协议版本也是 HTTP1.1。它和上面 GET 方法例子不一样的地方在于它的请求参数是位于请求数据中的,可以看到 name=Professional%20Ajax&publisher=Wiley 就是它的请求数据。并且我们要注意到在请求数据和请求头之间是空出一行的,这是必不可少的。

    三、GET 方法的特点

    1. 前面的例子:https://api.github.com/search/users?q=JakeWharton 就是一个非常典型的 GET 请求的表现形式,即请求的数据会附在 URL 之后(放在请求行中),以 ? 分割 URL 和传输数据,多个参数用 & 连接。

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

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


    幂等性 (Idempotence) 则指的是无论调用这个URL 多少次,都不会有不同的结果的 HTTP 方法。而在实际过程中,这个规定没有那么严格。例如在一个新闻应用中,新闻站点的头版不断更新,虽然第二次请求会返回不同的一批新闻,该操作仍然被认为是安全的和幂等的,因为它总是返回当前的新闻。

    1. GET 是会被浏览器主动缓存的,如果下一次传输的数据相同,那么就会返回缓存中的内容,以求更快地展示数据。
    2. GET 方法的 URL 一般都具有长度限制,但是需要注意的是 HTTP 协议中并未规定 GET 请求的长度。这个长度限制主要是由浏览器和 Web 服务器所决定的,并且各个浏览器对长度的限制也各不相同
    3. GET 方法只产生一个 TCP 数据包,浏览器会把请求头和请求数据一并发送出去,服务器响应 200 ok(返回数据)。

    四、POST 方法的特点

    1. 根据 HTTP 规范,POST 表示可能修改变服务器上的资源的请求。例如我们在刷知乎的时候对某篇文章进行点赞,就是提交的 POST 请求,因为它改变了服务器中的数据(该篇文章的点赞数)。

    2. POST 方法因为有可能修改服务器上的资源,所以它是不符合安全和幂等性的。

    3. 从前面关于 POST 的请求报文也可以看出,POST 是将请求信息放置在请求数据中的,这也是 POST 和 GET 的一点不那么重要的区别。有一些博客的说法是 GET 请求的请求信息是放置在 URL 的而 POST 是放置在请求数据中的所以 POST 比 GET 更安全。其实这种说法很有问题,随便抓下包 POST 中的请求报文就暴露无疑了,这又何来安全之说?

    4. 因为 POST 方法的请求信息是放置在请求数据中的,所以它的请求信息是没有长度限制的。

    5. POST 方法会产生两个 TCP 数据包,浏览器会先将请求头发送给服务器,待服务器响应100 continue,浏览器再发送请求数据,服务器响应200 ok(返回数据)。这么看起来 GET 请求的传输会比 POST 快上一些(因为GET 方法只发送一个 TCP 数据包),但是实际上在网络良好的情况下它们的传输速度基本相同。

    五、GET 和 POST 的区别

    上面说了那么多 GET 方法和 POST 方法各自的特点,它们在外在的表现上似乎是有着诸多的不同,但是实际上,它们的本质是一样的,并无区别!!!

    这似乎有些不可思议,但是我们重新回想一下 GET 和 POST 是什么?它们是 HTTP 请求协议的请求方法,而 HTTP 又是基于TCP/IP的关于数据如何在万维网中如何通信的协议,所以 GET/POST 实际上都是 TCP 链接

    也就是说,GET 和 POST 所做的事其实是一样的,如果你给 GET 加上请求数据,给 POST 加上 URL 参数,这在技术上是完全可行的,事实上确实有一些人为了贪图方便在更新资源时用了GET,因为用POST必须要到FORM(表单),这样会麻烦一点(但是强烈不建议这样子做!!!)。


    既然 GET 和 POST 的底层都是 TCP,那么为什么 HTTP 还要特别将它们区分出来呢?

    其实可以想象一下,如果我们直接使用 TCP 进行数据的传输,那么无论是单纯获取资源的请求还是修改服务器资源的请求在外观上看起来都是 TCP 链接,这样就非常不利于进行管理。所以在 HTTP 协议中,就会对这些不同的请求设置不同的类别进行管理,例如单纯获取资源的请求就规定为 GET、修改服务器资源的请求就规定为 POST,并且也对它们的请求报文的格式做出了相应的要求(例如请求参数 GET 位于 URL 而 POST 则位于请求数据中)。

    当然,如果我们想将 GET 的请求参数放置在请求数据中或者将 POST 的请求数据放置在 URL 中,这是完全可以的,虽然这样子做并不符合 HTTP 的规范。但是这样子做是否能得到我们期望的响应数据呢?答案是未必,这取决于服务器的行为。

    以 GET 方法在请求数据中放置请求参数为例,有些服务器会将请求数据中的参数读出,在这种情况下我们依然能获得我们期望的响应数据;而有些服务器则会选择直接忽略,这种情况下我们就无法获取期望的响应数据了。

    所以,对于 GET 和 POST 的区别,总结来说就是:它们的本质都是 TCP 链接,并无区别。但是由于 HTTP 的规定以及浏览器/服务器的限制,导致它们在应用过程中可能会有所不同

    参考

    本篇博客参考自以下公众号、网站以及博客:

    WebTechGarden: 99%的人都理解错了HTTP中GET与POST的区别

    菜鸟教程:HTTP教程

    HTTP POST GET 本质区别详解 (转)


    希望这篇文章能对您有所帮助~ 有问题的话可以在评论区下方给我留言或者直接私信我。

    展开全文
  • GetData2.20[破解汉化版]数据提取软件+GetData教程

    千次下载 热门讨论 2014-07-14 15:37:26
    最好用的数据提取软件,永久破解免费版,新增各种实用功能。另附专业教程,清晰易懂,作图必备!
  • http测试工具(get和post都可以)

    热门讨论 2015-05-13 13:15:10
    http测试工具(get和post都可以)
  • HTTP HTTPS POST GET(包含curl版本和winhttp两种实现)

    千次下载 热门讨论 2015-10-10 22:22:23
    玩过抓包,网络协议分析的朋友肯定都知道http https post get,web端和用户的交互主要是通过post get完成的。 我这里有两种实现: 1:libcurl实现的CHttpClient类,该类实现了Htpp和Https的get post方法。 2:...
  • get-pip.py 安装pip

    千次下载 热门讨论 2015-04-23 16:42:11
    get-pip.py 安装pip
  • Python requests的GET和POST方法

    万次阅读 多人点赞 2019-07-28 16:33:46
    Python requests的GET和POST方法 Requests模块是Python中发送请求获取响应的模块,使用 Requests 发送网络请求非常简单。 Requests的底层实现是Python标准库中的urllib,Requests从Python2.6一直到Python3的版本都...

    Python requests的GET和POST方法

    Requests模块是Python中发送请求获取响应的模块,使用 Requests 发送网络请求非常简单。

    Requests的底层实现是Python标准库中的urllib,Requests从Python2.6一直到Python3的版本都可以使用,所以Requests可以兼容Python2和Python3。

    使用Requests比使用urllib更简单,也更易用。

    urllib的使用可以参考: https://blog.csdn.net/weixin_43790276/article/details/95111341

    一、安装requests

    pip install requests

    二、使用requests发送GET请求

    # coding=utf-8
    import requests
    
    
    response = requests.get("https://www.baidu.com")
    print(response.content.decode('utf-8'))

    运行上面的代码,会获取到百度首页的html文件。我们直接在浏览器中打开百度首页,右键后点击“查看网页源代码”,得到的结果是一模一样的,说明我们已经通过requests获取到了百度首页的数据。

    三、requests添加报头参数和查询字符串

    # coding=utf-8
    import requests
    
    
    url = "https://www.sogou.com/tx?"
    key_dict = {"query": "python"}
    headers = {"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36",}
    response = requests.get(url, params=key_dict, headers=headers)
    print(response.text)

    运行上面的代码,获取搜狗搜索的网页数据。结果与我们用搜狗搜索“python”后,右键后点击“查看网页源代码”看到的结果相同。

    如果想添加headers,可以传入headers参数来增加请求头中的headers信息。如果要将参数放在url中传递,可以使用params参数,params会将字典参数转换成查询字符串拼接到url后面。

    四、response.content和response.text的区别

    在我们获取百度首页的时候使用了response.content,获取搜狗搜索时使用了response.text。response.content 和 response.text是requests解析响应数据最常用的两种方法。

    使用response.content 时,返回的是服务器响应数据的原始二进制字节流,response.content 的类型是 bytes ,通常用来保存图片等二进制文件。

    response.content 可以返回任何网页的数据,没有对响应数据解码,所以我们可以用deocde()来设置编码方式,这样可以得到正确的编码结果。

    使用response.text时,Requests 会基于HTTP响应的文本编码自动解码响应内容,response.text 的类型是 str, 大多数 Unicode 字符集都能被无缝地解码。

    response.text 是根据HTTP头部对响应的编码作出有根据的推测,推测出文本编码方式,然后进行解码。注意,这里是推测,所以 response.text 不能正确解码所有的网页数据,如百度首页。当不能使用 response.text 时,使用 response.content.deocde()。

    五、使用requests发送POST请求

    # coding=utf-8
    import requests
    import time
    import json
    
    
    url = "https://fanyi.qq.com/api/translate"
    headers = {
        "Origin": "https://fanyi.qq.com",
        "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36",
    }
    time_str = str(int(1000 * time.time()))
    key_dict = {
        "source": "zh",
        "target": "en",
        "sourceText": "发送 POST 请求",
        "sessionUuid ": "translate_uuid" + time_str
        }
    response = requests.post(url, data=key_dict, headers=headers)
    print(response.status_code)
    # result = json.loads(response.text)
    result = response.json()
    # print('result', result)
    print(result['translate']['records'][0]['targetText'])

    运行结果:

    200
    Send POST request

    在requests中,发送post请求,只需要使用post()方法就可以了,使用data参数接收字典数据,requests会自动将字典转换成json格式的请求体数据。

    我们可以使用response.status_code获取响应的状态码,直接使用 response.json() 获取响应的json数据,相当于json.loads(response.text) 。

    可见,使用requests更简洁和方便。

     

     

    展开全文
  • GET和POST的区别?

    万次阅读 2019-04-27 10:58:28
    如果你用GET服务,在request body偷偷藏了数据,不同服务器的处理方式也是不同的,有些服务器会帮你卸货,读出数据,有些服务器直接忽略,所以,虽然GET可以带request body,也不能保证一定能被接收到哦。...

    回答1:
    GET请求后退/刷新无害,POST后退/刷新则会导致重新提交数据。
    GET书签可被收藏、POST为书签不可收藏。
    GET能被缓存、POST不能被缓存。
    GET编码类型application/x-www-form-url、POST编码类型常见encodedapplication/x-www-form-urlencoded或multipart/form-data。
    GET历史参数保留在浏览器历史中、POST参数不会保存在浏览器历史中。
    GET对数据长度有限制(url限制2048个字符)、POST无限制。
    GET只允许ASCII字符、POST没有限制,也允许二进制数据。

    回答2:
    • GET 被强制服务器支持
    • 浏览器对URL的长度有限制,所以GET请求不能代替POST请求发送大量数据
    • GET请求发送数据更小
    • GET请求是不安全的
    • GET请求是幂等的
    • POST请求不能被缓存
    • POST请求相对GET请求是「安全」的

    • 在以下情况中,请使用 POST 请求:

    1. 无法使用缓存文件(更新服务器上的文件或数据库)
    2. 向服务器发送大量数据(POST 没有数据量限制)
    3. 发送包含未知字符的用户输入时,POST 比 GET 更稳定也更可靠
    4. post比Get安全性更高

    get和post的区别汇总:https://blog.csdn.net/qq_32534441/article/details/89639266
    先看 http://blog.csdn.net/qq_33417547/article/details/69055518

    Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE。URL全称是资源描述符,我们可以这样认为:一个URL地址,它用于描述一个网络上的资源,而HTTP中的GET,POST,PUT,DELETE就对应着对这个资源的查,改,增,删4个操作。到这里,大家应该有个大概的了解了,GET一般用于获取/查询资源信息,而POST一般用于更新资源信息。


    1,http中,GET用于信息获取,而且是安全的和幂等的。

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

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

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

    2,http中,POST是用于修改服务器上的资源的请求。


    说完原理性的问题,我们从表面上来看看GET和POST的区别:

    1. get是从服务器上获取数据,post是向服务器传送数据。 
    get 和 post只是一种传递数据的方式,get也可以把数据传到服务器,他们的本质都是发送请求和接收结果。只是组织格式和数据量上面有差别,http协议里面有介绍
      2. get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。post是通过HTTP post机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程。 
    因为get设计成传输小数据,而且最好是不修改服务器的数据,所以浏览器一般都在地址栏里面可以看到,但post一般都用来传递大数据,或比较隐私的数据,所以在地址栏看不到,能不能看到不是协议规定,是浏览器规定的。
    3. 对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取提交的数据。 
    没明白,怎么获得变量和你的服务器有关,和get或post无关,服务器都对这些请求做了封装
      4. get传送的数据量较小,不能大于2KB。post传送的数据量较大,一般被默认为不受限制。但理论上,IIS4中最大量为80KB,IIS5中为100KB。 
    post基本没有限制,我想大家都上传过文件,都是用post方式的。只不过要修改form里面的那个type参数
      5. get安全性非常低,post安全性较高。 
    如果没有加密,他们安全级别都是一样的,随便一个监听器都可以把所有的数据监听到。


    再看 http://blog.csdn.net/xdd19910505/article/details/49366653

    1、原理不同: 

                一般我们在浏览器输入一个网址访问网站都是GET请求;在FORM表单中,可以通过设置Method指定提交方式为GET或者POST提交方式,默认为GET提交方式。HTTP定义了与服务器交互的不同方式,其中最基本的四种:GET,POST,PUT,DELETE,HEAD,其中GET和HEAD被称为安全方法,因为使用GET和HEAD的HTTP请求不会产生什么动作。不会产生动作意味着GET和HEAD的HTTP请求不会在服务器上产生任何结果。但是安全方法并不是什么动作都不产生,这里的安全方法仅仅指不会修改信息。根据HTTP规范,POST可能会修改服务器上的资源的请求。 

    2、数据量 

                GET传送的数据量较小,不能大于2KB。POST传送的数据量较大,一般默认为不受限制。 

    3、安全性、效率 

                传统的比较都是觉得GET安全性非常低,POST安全性较高。因为GET请求的数据会暴露在地址栏中,而POST请求则不会。但是GET的执行效率比POST方法好。通过我们自己做的网站也是可以追踪到,GET提交的数据,用户名和密码将会明文出现在URL上,这样就给一些人一个机会,当别人拿到你的账号和密码之后后果不堪设想,听到这里突然毛骨悚然,但是又看到下面这样一则故事,顿时觉得这个世界还好……

    最后附上一个小段子

                是谁说的安全不安全和GET、POST没有关系。这个小段子,应该可以体会出这个说法多么的可笑。 
                觉得POST数据比GET数据安全的人会说“防君子不防小人; 
                中国小白多,能防小白用户就行了。” 
                “哼,”我不以为然,“那你怎么不说,URL参数都Encode过了,或是Base64一下,小白也看不懂啊。” 
                那人反驳道,“Encode太简单了,聪明点儿的小白很容易就可以Decode并修改掉。” 
                我笑道,“五十步笑百步耳,再聪明点儿的小白还会截包并重发呢,Opera就有这功能。” 
                那人阴险地祭出神器——最终解释权,说,“这个不算小白。” 
                我日啊。哈哈!

                用一句话总结GET和POST的区别,GET的安全性较POST方式要差些,包含机密信息的话,建议用POST数据提交方式。在做数据查询时,建议用GET方式;而在做数据添加、修改、删除时,建议用POST方式。


    最后看
    https://mp.weixin.qq.com/s?__biz=MzI3NzIzMzg3Mw==&mid=100000054&idx=1&sn=71f6c214f3833d9ca20b9f7dcd9d33e4#rd

    GET和POST是HTTP请求的两种基本方法,要说它们的区别,接触过WEB开发的人都能说出一二。

    最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数。

    你可能自己写过无数个GET和POST请求,或者已经看过很多权威网站总结出的他们的区别,你非常清楚知道什么时候该用什么。

    当你在面试中被问到这个问题,你的内心充满了自信和喜悦。


    你轻轻松松的给出了一个“标准答案”:

    • GET在浏览器回退时是无害的,而POST会再次提交请求。


    • GET产生的URL地址可以被Bookmark,而POST不可以。


    • GET请求会被浏览器主动cache,而POST不会,除非手动设置。


    • GET请求只能进行url编码,而POST支持多种编码方式。


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


    • GET请求在URL中传送的参数是有长度限制的,而POST么有。


    • 对参数的数据类型,GET只接受ASCII字符,而POST没有限制。


    • GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息。


    • GET参数通过URL传递,POST放在Request body中。

    (本标准答案参考自w3schools)


    “很遗憾,这不是我们要的回答!”


    请告诉我真相。。。


    如果我告诉你GET和POST本质上没有区别你信吗? 


    让我们扒下GET和POST的外衣,坦诚相见吧!



    GET和POST是什么?HTTP协议中的两种发送请求的方法。


    HTTP是什么?HTTP是基于TCP/IP的关于数据如何在万维网中如何通信的协议。


    HTTP的底层是TCP/IP。所以GET和POST的底层也是TCP/IP,也就是说,GET/POST都是TCP链接。GET和POST能做的事情是一样一样的。你要给GET加上request body,给POST带上url参数,技术上是完全行的通的。 


    那么,“标准答案”里的那些区别是怎么回事?




    在我大万维网世界中,TCP就像汽车,我们用TCP来运输数据,它很可靠,从来不会发生丢件少件的现象。但是如果路上跑的全是看起来一模一样的汽车,那这个世界看起来是一团混乱,送急件的汽车可能被前面满载货物的汽车拦堵在路上,整个交通系统一定会瘫痪。为了避免这种情况发生,交通规则HTTP诞生了。HTTP给汽车运输设定了好几个服务类别,有GET, POST, PUT, DELETE等等,HTTP规定,当执行GET请求的时候,要给汽车贴上GET的标签(设置method为GET),而且要求把传送的数据放在车顶上(url中)以方便记录。如果是POST请求,就要在车上贴上POST的标签,并把货物放在车厢里。当然,你也可以在GET的时候往车厢内偷偷藏点货物,但是这是很不光彩;也可以在POST的时候在车顶上也放一些数据,让人觉得傻乎乎的。HTTP只是个行为准则,而TCP才是GET和POST怎么实现的基本。


    但是,我们只看到HTTP对GET和POST参数的传送渠道(url还是requrest body)提出了要求。“标准答案”里关于参数大小的限制又是从哪来的呢?




    在我大万维网世界中,还有另一个重要的角色:运输公司。不同的浏览器(发起http请求)和服务器(接受http请求)就是不同的运输公司。 虽然理论上,你可以在车顶上无限的堆货物(url中无限加参数)。但是运输公司可不傻,装货和卸货也是有很大成本的,他们会限制单次运输量来控制风险,数据量太大对浏览器和服务器都是很大负担。业界不成文的规定是,(大多数)浏览器通常都会限制url长度在2K个字节,而(大多数)服务器最多处理64K大小的url。超过的部分,恕不处理。如果你用GET服务,在request body偷偷藏了数据,不同服务器的处理方式也是不同的,有些服务器会帮你卸货,读出数据,有些服务器直接忽略,所以,虽然GET可以带request body,也不能保证一定能被接收到哦。


    好了,现在你知道,GET和POST本质上就是TCP链接,并无差别。但是由于HTTP的规定和浏览器/服务器的限制,导致他们在应用过程中体现出一些不同。 


    你以为本文就这么结束了?



    我们的大BOSS还等着出场呢。。。


    这位BOSS有多神秘?当你试图在网上找“GET和POST的区别”的时候,那些你会看到的搜索结果里,从没有提到他。他究竟是什么呢。。。


    GET和POST还有一个重大区别,简单的说:

    GET产生一个TCP数据包;POST产生两个TCP数据包。


    长的说:

    对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);

    而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。


    也就是说,GET只需要汽车跑一趟就把货送到了,而POST得跑两趟,第一趟,先去和服务器打个招呼“嗨,我等下要送一批货来,你们打开门迎接我”,然后再回头把货送过去。


    因为POST需要两步,时间上消耗的要多一点,看起来GET比POST更有效。因此Yahoo团队有推荐用GET替换POST来优化网站性能。但这是一个坑!跳入需谨慎。为什么?

    1. GET与POST都有自己的语义,不能随便混用。

    2. 据研究,在网络环境好的情况下,发一次包的时间和发两次包的时间差别基本可以无视。而在网络环境差的情况下,两次包的TCP在验证数据包完整性上,有非常大的优点。

    3. 并不是所有浏览器都会在POST中发送两次包,Firefox就只发送一次。


    现在,当面试官再问你“GET与POST的区别”的时候,你的内心是不是这样的?

    展开全文
  • 99%的人都理解错了HTTP中GET与POST的区别

    万次阅读 多人点赞 2019-03-02 23:43:55
    最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数。 你可能自己写过无数个GET和POST请求,或者已经看过很多权威网站总结出的他们的区别,你非常清楚知道什么时候该用什么。 当你在面试中被问...

    GET和POST是HTTP请求的两种基本方法,要说它们的区别,接触过WEB开发的人都能说出一二。

    最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数。

    你可能自己写过无数个GET和POST请求,或者已经看过很多权威网站总结出的他们的区别,你非常清楚知道什么时候该用什么。

    当你在面试中被问到这个问题,你的内心充满了自信和喜悦。

    你轻轻松松的给出了一个“标准答案”:

    • GET在浏览器回退时是无害的,而POST会再次提交请求。

    • GET产生的URL地址可以被Bookmark,而POST不可以。

    • GET请求会被浏览器主动cache,而POST不会,除非手动设置。

    • GET请求只能进行url编码,而POST支持多种编码方式。

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

    • GET请求在URL中传送的参数是有长度限制的,而POST么有。

    • 对参数的数据类型,GET只接受ASCII字符,而POST没有限制。

    • GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息。

    • GET参数通过URL传递,POST放在Request body中。

    (本标准答案参考自w3schools)

     

    “很遗憾,这不是我们要的回答!”

     

    请告诉我真相。。。

    如果我告诉你GET和POST本质上没有区别你信吗? 
    让我们扒下GET和POST的外衣,坦诚相见吧!

    GET和POST是什么?HTTP协议中的两种发送请求的方法。

    HTTP是什么?HTTP是基于TCP/IP的关于数据如何在万维网中如何通信的协议。

    HTTP的底层是TCP/IP。所以GET和POST的底层也是TCP/IP,也就是说,GET/POST都是TCP链接。GET和POST能做的事情是一样一样的。你要给GET加上request body,给POST带上url参数,技术上是完全行的通的。 

    那么,“标准答案”里的那些区别是怎么回事?

    在我大万维网世界中,TCP就像汽车,我们用TCP来运输数据,它很可靠,从来不会发生丢件少件的现象。但是如果路上跑的全是看起来一模一样的汽车,那这个世界看起来是一团混乱,送急件的汽车可能被前面满载货物的汽车拦堵在路上,整个交通系统一定会瘫痪。为了避免这种情况发生,交通规则HTTP诞生了。HTTP给汽车运输设定了好几个服务类别,有GET, POST, PUT, DELETE等等,HTTP规定,当执行GET请求的时候,要给汽车贴上GET的标签(设置method为GET),而且要求把传送的数据放在车顶上(url中)以方便记录。如果是POST请求,就要在车上贴上POST的标签,并把货物放在车厢里。当然,你也可以在GET的时候往车厢内偷偷藏点货物,但是这是很不光彩;也可以在POST的时候在车顶上也放一些数据,让人觉得傻乎乎的。HTTP只是个行为准则,而TCP才是GET和POST怎么实现的基本。

    但是,我们只看到HTTP对GET和POST参数的传送渠道(url还是requrest body)提出了要求。“标准答案”里关于参数大小的限制又是从哪来的呢?

     

    在我大万维网世界中,还有另一个重要的角色:运输公司。不同的浏览器(发起http请求)和服务器(接受http请求)就是不同的运输公司。 虽然理论上,你可以在车顶上无限的堆货物(url中无限加参数)。但是运输公司可不傻,装货和卸货也是有很大成本的,他们会限制单次运输量来控制风险,数据量太大对浏览器和服务器都是很大负担。业界不成文的规定是,(大多数)浏览器通常都会限制url长度在2K个字节,而(大多数)服务器最多处理64K大小的url。超过的部分,恕不处理。如果你用GET服务,在request body偷偷藏了数据,不同服务器的处理方式也是不同的,有些服务器会帮你卸货,读出数据,有些服务器直接忽略,所以,虽然GET可以带request body,也不能保证一定能被接收到哦。

    好了,现在你知道,GET和POST本质上就是TCP链接,并无差别。但是由于HTTP的规定和浏览器/服务器的限制,导致他们在应用过程中体现出一些不同。 

    你以为本文就这么结束了?

    我们的大BOSS还等着出场呢。。。

    这位BOSS有多神秘?当你试图在网上找“GET和POST的区别”的时候,那些你会看到的搜索结果里,从没有提到他。他究竟是什么呢。。。

    GET和POST还有一个重大区别,简单的说:

    GET产生一个TCP数据包;POST产生两个TCP数据包。

    长的说:

    对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);

    而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。

    也就是说,GET只需要汽车跑一趟就把货送到了,而POST得跑两趟,第一趟,先去和服务器打个招呼“嗨,我等下要送一批货来,你们打开门迎接我”,然后再回头把货送过去。

    因为POST需要两步,时间上消耗的要多一点,看起来GET比POST更有效。因此Yahoo团队有推荐用GET替换POST来优化网站性能。但这是一个坑!跳入需谨慎。为什么?

    1. GET与POST都有自己的语义,不能随便混用。

    2. 据研究,在网络环境好的情况下,发一次包的时间和发两次包的时间差别基本可以无视。而在网络环境差的情况下,两次包的TCP在验证数据包完整性上,有非常大的优点。

    3. 并不是所有浏览器都会在POST中发送两次包,Firefox就只发送一次。

    现在,当面试官再问你“GET与POST的区别”的时候,你的内心是不是这样的?

     

    文章来源:http://t.cn/RjLq41J

    ----------------------------------------------------------------------------------------------

    欢迎关注我的微信公众号,每天早上9:00准时推送精彩文章。

    扫码关注后,回复“资源”或者“架构”即可领取海量优质视频资源。

    展开全文
  • httppost和httpget需要的jar包

    千次下载 热门讨论 2013-12-06 10:53:55
    httppost和httpget需要的jar包
  • GET请求里的body问题

    千次阅读 2020-07-25 11:58:56
    今天有人问我,为什么发到后端的请求400了,我说肯定是参数不对,你去检查检查GET、POST之类的方法写没写对,要么就是字段没对上,无非是这几个问题。然后他说检查过了,没问题啊;我不太相信,但是看了看前端发送的...
  • Java通过http协议发送Get和Post请求

    万次阅读 多人点赞 2019-07-02 14:21:07
    Java通过http协议发送Get和Post请求 本文是基于Windows 10系统环境,利用MyEclipse构建一个java项目,并通过http协议发送Get和Post请求 Windows 10 MyEclipse 一、准备工作 (1) 下载需要用的工具jar包 二、Post...
  • 简述HTML中post与get请求的区别

    万次阅读 多人点赞 2019-05-23 20:04:22
    简述ajax中post与get请求的区别,以及请求报文欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个...
  • 33.form标签中的GET和POST提交方式

    万次阅读 多人点赞 2021-09-05 10:36:26
    form标签中的GET和POST 在HTML中,form表单的作用是收集标签中的内容,<form>...</form> 中间可以由访问者添加类似于文本,选择,或者一些控制模块等等.然后这些内容将会被送到服务端。 一个表单必须指定两...
  • python request库的get方法详解

    万次阅读 2019-08-14 10:03:03
    request.get()@TOC request.get()方法详解 声明:此贴为本人学习心得,中间很多内容来自其他老师的帖子,能力有限,代码等实例也是复制的,已尽量表明出处,方便理解学习,并非恶意盗取,特此声明。 毕业十年,最近...
  • 只不过Class.getResource是先调用Class 的 getResource 方法,在这个getResource 方法中,再去调用ClassLoader 类的getResource方法 那么Class类中的getResource方法做了什么呢,主要的一句是 name = resolve...
  • post和get的区别

    千次阅读 多人点赞 2019-04-25 18:49:39
    最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数。 你可能自己写过无数个GET和POST请求,或者已经看过很多权威网站总结出的他们的区别,你非常清楚知道什么时候该用什么。 当你在面试中被问...
  • apt-get 使用详解

    万次阅读 2019-09-17 16:19:42
    http://blog.csdn.net/wyabc1986/article/details/6989532 [举例] 目前常用的 ========== *更新本机中的数据库缓存: sudo apt-get update *查找包含部分关键字的软件包: ...
  • $.get $.get()方法使用GET方式来进行异步请求,它的语法结构为: $.get( url [, data] [, callback] ) 解释一下这个函数的各个参数: url:string类型,ajax请求的地址。 data:可选参数,object类型,发送至服务器...
  • get请求和post请求的详细区别

    万次阅读 多人点赞 2019-06-06 16:29:40
    最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数。 你可能自己写过无数个GET和POST请求,或者已经看过很多权威网站总结出的他们的区别,你非常清楚知道什么时候该用什么。 当你在面试中...
  • request.GET.get()和request.GET()区别

    千次阅读 2020-06-23 15:21:34
    我们知道,request.GET() 是django根据键接收值常用方法,django官方文档也是给出的这个,但是我们实际开发基本上都是request.GET.get(),其实很好理解,但是对于许多初学者还是很迷惑,下面就这个问题我讲一下: ...
  • C++的get()函数使用详解

    千次阅读 多人点赞 2020-07-07 20:08:34
    C++的get()函数使用详解 C++ get()函数 get()函数是cin输入流对象的成员函数,它有3种形式: 无参数的; 有一个参数的; 有3个参数的。 1) 无参数的 其调用形式为 cin.get() 用来从指定的输入流中提取一个字符...
  • https://yanbin.blog/why-http-get-cannot-sent-data-with-reuqest-body/#more-8193 //谁说 HTTP GET 就不能通过 Body 来发送数据呢? 下面截图: 2.实践/验证过程 环境: Windows 10 ...
  • 关于在GET请求中使用body

    万次阅读 多人点赞 2019-05-06 19:38:18
    今天有人问我,为什么发到后端的请求400了,我说肯定是参数不对,你去检查检查GET、POST之类的方法写没写对,要么就是字段没对上,无非是这几个问题。然后他说检查过了,没问题啊;我不太相信,但是看了看前端发送的...
  • Flutter get方法和set方法实战

    万次阅读 2021-01-05 19:40:37
    Flutter get方法和set方法实战 在 Flutter 中,get 和 set 方法如何实现呢? get 和 set 方法是一对用来读写对象属性的特殊方法,其实,实例对象的每一个属性都有一个隐式的 get 方法,而且如果为非 final 属性的话...
  • 支持HTTPS的Get和Post函数

    热门讨论 2013-07-17 20:15:32
    自己用底层的WinINet.dll写的一些函数,可通过HTTPS协议POST数据,分享一下
  • get 函数

    万次阅读 多人点赞 2019-03-14 15:15:08
    get 函数 文章目录get 函数1. 不带参数的get函数2. 有一个参数的get函数3. 有3个参数的get函数 1. 不带参数的get函数 cin.get() 从指定的输入流中提取一个字符(包括空白字符,空格、换行、tab 等),函数的返回值...
  • Android端使用get post 方法提交数据到服务器demo 传智播客张泽华Android视频54-57代码 包括web和Android端 仅供学习
  • GET请求的长度限制

    千次阅读 2019-10-25 22:37:14
    最近在生产环境为上游服务提供了一个批量接口(dubbo接口),没有做长度的限制,造成我调用下游的http请求(GET请求)时由于长度(大概9000+个字符)超过了限制,造成直接返回400 Bad Request,影响了上游服务的使用...
  • GET和POST的本质区别

    千次阅读 2021-01-05 00:12:58
    - GET在浏览器回退时是无害的,而POST会再次提交请求。 - GET产生的URL地址可以被浏览器添加为书签,而POST不可以。 - GET请求会被浏览器主动缓存,(这里是数据会被前端缓存,当浏览器发了一条请求,会返回数据,...
  • 浏览器中GET和POST请求的区别

    万次阅读 多人点赞 2016-09-10 03:08:44
    在使用表单或者url提交数据时,我们经常要考虑到提交数据的方式,其中GET和POST介绍如下所示:一、原理 一般我们在浏览器输入一个网址访问网站都是GET请求;在使用FORM表单提交数据中,可以通过设置Method指定提交...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,997,029
精华内容 3,198,811
关键字:

get