在web中,get和post的区别详解

在web中,get和post的区别详解

在说get和post的区别之前,我们应该先了解一下什么是HTTP。

HTTP 简介

HTTP是一个简单的请求-响应协议,是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是一个基于TCP/IP通信协议的用来传递数据的协议。

HTTP 工作原理

HTTP是基于客户/服务器模式的,面向连接的,一种无状态协议。浏览器作为HTTP客户端通过URL向HTTP服务端(即WEB服务器)发送请求。典型的HTTP处理过程如下:
(1)客户与服务器建立连接
(2)客户向服务器提出请求
(3)服务器接受请求,并根据请求返回相应的结果作为应答
(4)客户与服务器断开连接

HTTP注意事项:
HTTP是面向连接的:即每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。
HTTP是媒体独立的:只要客户端和服务器知道如何处理数据的内容,任何类型的数据都可以通过HTTP发送。客户端以及服务器指定使用适合的MIME-type内容类型。
HTTP是无状态的:无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。但另一方面,在服务器不需要先前信息时它的应答就较快。

HTTP 请求方法

OPTIONS:返回服务器针对特定资源所支持的HTTP请求方法。也可以利用向Web服务器发送’*'的请求来测试服务器的性能
HEAD:类似于 GET 请求,只不过返回的响应中没有具体的内容,用于获取报头
GET:请求指定的页面信息,并返回实体主体
POST:向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的创建和/或已有资源的修改
PUT:从客户端向服务器上传最新内容
DELETE:请求服务器删除指定的页面
TRACE:回显服务器收到的请求,主要用于测试或诊断
CONNECT:HTTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器

GET 和 POST 的区别

一、
get请求会附在 URL 之后,以 ?分割 URL 和传输数据,多个参数用 & 连接,有长度限制。
post请求放在Request body中(content),没有长度限制。

二、
get请求用于信息获取,而且应该是安全幂等的。所以get请求在浏览器回退时是无害的。
post请求可能修改服务器上的资源,所以是不符合安全和幂等的。且浏览器回退时会再次提交请求。

安全性指的是非修改信息,即该操作用于获取信息而非修改信息。换句话说,GET请求一般不应产生副作用,也就是说,它仅仅是获取资源信息,就像数据库查询一样,不会修改、增加数据,不会影响资源的状态。
幂等性 (Idempotence) 指的是无论调用这个URL 多少次,都不会有不同的结果的 HTTP 方法。而在实际过程中,这个规定没有那么严格。例如在一个新闻应用中,新闻站点的头版不断更新,虽然第二次请求会返回不同的一批新闻,该操作仍然被认为是安全和幂等的,因为它总是返回当前的新闻。

三、
get请求可以被缓存。
post请求不可以被缓存。

四、
get请求因为会在URL中显示,所以不安全,不能用来传递敏感信息。
post请求相对于get请求来说,相对安全。(但是通过抓包还是可以获得post请求所要传输的数据)

五、
get请求只能进行url编码。
post请求支持多种编码方式。

在这里插入图片描述

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

西瓜~

你的鼓励将是我创作的最大动力。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值