HTTP中GET请求和POST请求的区别

这篇具有很好参考价值的文章主要介绍了HTTP中GET请求和POST请求的区别。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

http get post,http,网络协议,网络

前言

HTTP(超文本传输协议)是用于在 Web 浏览器和 Web 服务器之间传输数据的协议。在 HTTP 中,GET 和 POST 是两种常见的请求方法。一般我们在浏览器输入一个网址访问网站都是 GET 请求;在 FORM 表单中,可以通过设置 Method 指定提交方式为 GET 或者 POST 提交方式,默认为 GET 提交方式。它们在数据传输和使用方式上存在一些区别。GET 请求用于获取资源,将参数附加在 URL 末尾;而 POST 请求用于提交数据,参数包含在请求的主体(requset body)中。根据具体需求和安全性考虑,选择适当的请求方法。

基本区别

  • GET 请求将参数包含在 URL 中,POST 请求是将参数放在 request body 中

这是什么意思呢?这里我模拟两个请求

http get post,http,网络协议,网络

当我分别点击两个按钮

GET 请求:

http get post,http,网络协议,网络

POST 请求:

http get post,http,网络协议,网络

可以看出 GET 请求会将参数包含在 URL 中,而 POST 则会将参数放在 request body 中(这里我没有进行展示)

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

浏览器中使用 GET 请求时,当用户点击浏览器的回退按钮返回到之前的页面时,GET 请求不会对页面产生影响或重复提交请求。而对于 POST 请求,当用户点击浏览器的回退按钮返回到之前的页面时,浏览器可能会再次提交之前的 POST 请求。

  • GET 产生的 URL 可以保存在浏览器书签中,而 POST 不会

GET 请求产生的 URL 包含了查询字符串参数,可以直接将带有参数的 URL 保存为浏览器书签,方便以后再次访问。因为 GET 请求的参数直接暴露在 URL 中,所以可以轻松地将包含参数的 URL 添加到书签栏或收藏夹中。

而对于 POST 请求,由于参数是通过请求的主体传递的,并不直接暴露在 URL 中,所以不能将 POST 请求的完整 URL 直接保存为书签。

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

当浏览器收到 GET 请求的响应时,它会检查响应的缓存标识(例如响应头中的 Cache-Control 和 Expires 字段),如果响应可以被缓存且缓存未过期,浏览器会将响应保存在缓存中。当下次发送相同的 GET 请求时,浏览器会直接从缓存中获取响应,而不会向服务器发送请求。

相比之下,对于 POST 请求,默认情况下,浏览器不会对响应进行缓存。因为 POST 请求通常用于向服务器提交数据,而数据的状态可能会在每次请求中发生变化,因此缓存 POST 请求的响应可能导致不正确的结果。如果希望对 POST 请求的响应进行缓存,开发人员需要在服务器的响应中设置适当的缓存标识(如 Cache-Control 和 Expires),并且浏览器需要遵循这些设置进行缓存。

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

当通过 GET 请求传递参数时,参数值会被 URL 编码。URL 编码是一种将特殊字符转换为特定格式的编码方式,以便在 URL 中进行传输。特殊字符如空格、问号、等号等会被替换成特殊编码形式,比如使用”%20″代替空格。

而对于 POST 请求,可以使用多种编码方式来传递参数。最常见的编码方式是 URL 编码(application/x-www-form-urlencoded),它类似于 GET 请求中的编码方式,将参数转换为 URL 编码形式。此外,还可以使用其他编码方式,如 multipart/form-data 编码,用于支持上传文件或二进制数据的传输。

通过 POST 请求,可以根据具体的需求和数据类型,选择合适的编码方式来传递参数。不同的编码方式适用于不同的场景,可以提供更丰富的参数传递和数据处理能力。

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

当使用 GET 请求时,参数会以查询字符串的形式附加在 URL 上。然而,由于部分浏览器对 URL 长度有限制,因此 GET 请求在传递参数时存在长度限制。

相比之下,POST 请求将参数放置在请求主体(Request Body)中,而不受 URL 长度限制。这意味着当需要传递大量数据、上传文件或进行编码转换等操作时,通常会选择使用 POST 请求。

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

由于 URL 的限制和查询字符串的传递方式,GET 请求中的参数通常需要进行 URL 编码,以确保特殊字符和非 ASCII 字符能够正确传输。URL 编码会将特殊字符转换为特定的编码形式,以确保其在 URL 中的正确性和可传递性。

相比之下,POST 请求的参数可以更自由地传输各种类型的数据,包括特殊字符和非 ASCII 字符,而不需要像 GET 请求那样进行 URL 编码。这是因为 POST 请求将参数包含在请求主体中,而不是直接暴露在 URL 中。

小知识

GET 请求比 POST 请求快

当然这不是绝对的,如果排除其他因素,仅考虑 GET 和 POST 请求本身的差异,那么可以说在某些情况下 GET 请求可能比 POST 请求更快。
这是为什么呢?
这是因为 POST 在真正接收数据之前会先将请求头发送给服务器进行确认,然后才真正发送数据。


POST 请求的过程:

  1. 浏览器请求建立 TCP 连接(第一次握手)。
  2. 服务器确认并接受 TCP 连接请求(第二次握手)。
  3. 浏览器发送包含 POST 请求头的小型数据包(第三次握手),同时 HTTP 也在此时进行第一次数据发送。
  4. 服务器返回 100 Continue 响应,表示准备接收请求主体。
  5. 浏览器继续发送包含请求主体的数据。
  6. 服务器接收完整的请求后进行处理,并返回 200 OK 响应。

GET 请求的过程:

  1. 浏览器请求建立 TCP 连接(第一次握手)。
  2. 服务器确认并接受 TCP 连接请求(第二次握手)。
  3. 浏览器发送包含 GET 请求头和数据的小型数据包(第三次握手),同时 HTTP 也在此时进行第一次数据发送。
  4. 服务器接收到请求后进行处理,并返回 200 OK 响应。

也因此 GET 只产生一个 TCP 数据包;而 POST 产生两个 TCP 数据包。文章来源地址https://www.toymoban.com/news/detail-852446.html

到了这里,关于HTTP中GET请求和POST请求的区别的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • http协议中的GET和POST请求

    📄 个人主页: 你这个小猪 ✨ 个人简介:Java领域新星菜鸟,随时准备跑路的大二学生 🔥 精品专栏:筹划ing 🌈 个人名言:技术的深度和广度缺一不可 目录  格式介绍  演示 请求数据总共分为三部分内容,分别是请求行、请求头、请求体 求行: HTTP请求中的第一行数据,请

    2023年04月16日
    浏览(39)
  • http请求中get和post方法的区别

    超文本传输协议(HTTP)的设计目的是保证客户端与服务器之间的通信。 HTTP 的工作方式是客户端与服务器之间的请求-应答协议。 web 浏览器可能是客户端,而计算机上的网络应用程序也可能作为服务器端。 举例:客户端(浏览器)向服务器提交 HTTP 请求;服务器向客户端返

    2024年02月03日
    浏览(54)
  • HTTP协议 9 种请求方式用途及区别(详解)-- GET、POST、HEAD、OPTIONS、PUT、PATCH、DELETE、TRACE、CONNECT

    关于HTTP简介HTTP菜鸟教程 根据 HTTP 标准,HTTP 请求可以使用多种请求方法。 HTTP1.0 定义了三种请求方法: GET, POST 和 HEAD 方法。 HTTP1.1 新增了六种请求方法:OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT 方法。 序号 方法 描述用途 1 GET 【 获取资源 】本质就是发送一个请求来取得服务

    2024年02月02日
    浏览(53)
  • 【接口】HTTP(3) |GET和POST两种基本请求方法有什么区别

    在我面试时,在我招人面试别人时,10次能遇到7次这个问题,我听过我也说回答过: Get: 一般对于从服务器取数据的请求可以设置为get方式 Get方式在传递参数的时候,一般都会把参数直接拼接在url上 Get请求方法可以传递的参数数据量是有限的(因为一般参数是拼接在url上,

    2024年04月12日
    浏览(43)
  • HTTP请求:GET/POST请求

    GET  用于:地址栏请求  通过url请求 POST 用于:表单请求 DELETE 用于删除 PUT 用于更新 GET的请求直接嵌入在路径中URL是完整的请求路径,包括了 ?后面的部分,因此你可以手动解析后面的内容作为GET请求的参数 node.js是UEL模块中的parse函数提供了这个功能。 util是node.js常用工具

    2024年02月16日
    浏览(65)
  • uniapp发起post和get请求——this.$http.get 和 this.$http.post传参

    main.js按照内容自行修改

    2024年02月15日
    浏览(46)
  • 【HTTP】URL结构、HTTP请求和响应的报文格式、HTTP请求的方法、常见的状态码、GET和POST有什么区别、Cookie、Session等重点知识汇总

    目录 URL格式 HTTP请求和响应报文的字段? HTTP请求方法 常见的状态码 GET 和 POST 的区别 Cookie 和 Session ? :是用来分割URL的主体部分(通常是路径)和查询字符串(query string)查询字符串是一组键值对的参数 query string :是键值对的结构,分割键值对,=分割键和值 Content-Type

    2024年02月07日
    浏览(46)
  • 【HTTP】GET 和 POST 的区别

    首先: GET 和 POST 没有本质区别, 具体来说, GET 的使用场景可替换为 POST,POST 使用的场景也可以替换为 GET. 语义上的区别: GET 通常用来获取数据, POST 通常用来上传数据. 现状是 GET 也经常用来上传数据, POST 也经常用来获取数据. 数据存放的位置不同: GET 没有 body, GET 通过 query str

    2024年02月07日
    浏览(42)
  • HTTP Get 和 Post 的区别

    使用规范 根据HTTP规范,GET用于信息获取,而且应该是安全的和幂等的。 根据HTTP规范,POST表示可能修改变服务器上的资源的请求。 传递参数 GET请求的数据会附在URL之后(就是把数据放置在HTTP协议头中)。 POST把提交的数据则放置在是HTTP包的包体中。 安全性 POST的安全性要

    2024年02月10日
    浏览(35)
  • Java发送HTTP GET/POST请求

    在这篇文章中,将向你展示四种发送Http的GET/POST的例子,如下: 在Java11的java.net.http.*包中,有一个HttpClient类可以完成HTTP请求。 Java11HttpClientExample.java 本例使用HttpURLConnection(http)和HttpsURLConnection(https) HttpURLConnectionExample.java 使用Apache HttpClient完成HTTP请求的发送需要添加Maven依赖

    2024年02月13日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包