html中的get和post请求

GET和POST请求在TCP层面上无本质区别,都是基于TCP协议通信。HTTP规定GET请求将数据放在URL中,POST请求将数据放在请求体中。浏览器和服务器的限制导致它们在应用中表现出差异,如GET的URL长度限制和POST的数据量限制。GET主要用于获取数据,而POST常用于提交数据,但两者都可用于数据交互。
摘要由CSDN通过智能技术生成

刚接触get和post就像html协议规范所写的get用来从服务器获取资源,post用来提交表单数据:当用户填写表单并点击提交按钮时,会使用 POST 请求将表单数据发送到服务器
但是在学习漏洞的时候会发现有些请求是以get请求发送的,这和协议所说并不是很相符的,对此我就产生了疑问。get和post究竟有什么区别,我就查找资料,之后我在网上查找到了一篇文章。

在我大万维网世界中,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的规定和浏览器/服务器的限制,导致他们在应用过程中体现出一些不同。

原文解释

之后是我的理解
无论是 GET 还是 POST 请求,它们都是基于 TCP 协议进行通信的。

无论是 GET 请求还是 POST 请求,底层的通信都需要使用 TCP 协议来保证数据的可靠性和完整性。当浏览器或应用程序发送 GET 或 POST 请求时,实际上是在使用 TCP 协议与服务器进行通信,确保请求数据的可靠传输和响应数据的正确接收。

因此,可以说 GET 和 POST 请求都是基于 TCP 协议的,而 TCP 协议则负责在底层提供数据传输的功能。

所以说get和post都可以发送请求:

无论是 GET 还是 POST 请求,它们都是客户端向服务器发送请求的方式。通过这两种方法,客户端可以向服务器请求资源、提交表单数据或执行其他操作。

对于 GET 请求,客户端将请求参数附加在URL的查询字符串中,对于 POST 请求,客户端将请求参数包含在请求的正文中进行传输,

无论是 GET 还是 POST 请求,它们都可以用来发送请求并与服务器进行通信。根据具体的需求和操作,我们可以选择适合的方法来发送请求。

post也可以获取数据:

虽然 POST 请求通常被用于向服务器发送数据,但它也可以用于获取数据。在一些情况下,服务器可能会要求客户端通过 POST 请求来获取特定的数据资源。

当客户端发送 POST 请求时,可以在请求中包含参数或者请求体来指定需要获取的数据。服务器接收到这个 POST 请求后,可以根据请求中的参数或者请求体来处理,并将对应的数据资源作为响应返回给客户端。客户端可以通过解析响应来获取所需的数据。

比如,一个简单的使用 POST 请求获取数据的例子:

POST /data HTTP/1.1
Host: example.com

param1=value1&param2=value2

在上面的例子中,客户端发送了一个 POST 请求到 example.com/data 路径,并在请求体中传递了参数 param1 和 param2。服务器处理该请求,并将相应的数据作为响应返回给客户端。

因此,尽管 POST 请求通常用于发送数据,但也可以用于获取数据,具体取决于服务器端的实现和约定。

那么get又是怎么获取数据的呢:

当客户端发送 GET 请求时,请求的参数会附加在 URL 的查询字符串中,即将请求的数据编码为键值对的形式拼接在 URL 后面。服务器接收到这个 GET 请求后,可以根据请求中的参数来处理,并将相应的数据作为响应返回给客户端。

比如,一个简单的使用 GET 请求获取数据的例子:

GET /data?param1=value1&param2=value2 HTTP/1.1
Host: example.com

在上述示例中,客户端发送了一个 GET 请求到 example.com/data 路径,并在 URL 查询字符串中传递了参数 param1 和 param2。服务器根据这些参数处理请求,并将相应的数据作为响应返回给客户端。

通过解析响应,客户端可以获取所需的数据。

综上所述,GET 请求主要用于从服务器获取数据,通过在 URL 查询字符串中传递参数来指定获取的数据。服务器根据这些参数处理请求,并将相应的数据作为响应返回给客户端

  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值