HTTP各种请求方法的的幂等性和安全性
幂等性和安全性是http请求方法的特性, 比如 get请求方法是具有安全性的
安全性(此次请求不会修改后台):
仅指该方法的多次调用不会产生副作用,不涉及传统意义上的“安全”,这里的副作用是指资源状态。
即,安全的方法不会修改资源状态,尽管多次调用的返回值可能不一样(被其他非安全方法修改过)。
幂等性(多次请求一个url,返回值不变):
是指该方法多次调用返回的效果(形式)一致,客户端可以重复调用并且期望同样的结果。
一次调用和多次调用产生的效果是一致的,都是对一个变量进行赋值。
方法名 | 安全性 | 幂等性 | 请求方法的作用 |
---|---|---|---|
get | √ | √ | 请求指定的页面信息,并返回实体主体 |
head | √ | √ | 只请求页面的首部 |
options | √ | √ | 允许客户端查看服务器的性能 |
delete | × | √ | 请求服务器删除指定的数据 |
put | × | √ | 从客户端向服务器传送的数据取代指定的文档的内容 |
post | × | × | 请求服务器接受所指定的文档作为对所标识的URI的新的从属实体 |
head方法:
head方法和get方法差不多 , 但是head方法只会获取response响应头的信息, 并不会获取response.body的信息拿django来说, 如果有head方法, 他会走head方法, 如果你没定义head方法, 他会走get方法
响应体是空的
响应头有信息
options方法:
options方法响应体是这样的:
django中并不会走你定义的视图函数,但是会把视图的注释给返回
request请求走完中间件,然后通过下面这个方法,获得的响应体
如何避免options请求
put和delete方法为什么是幂等的?
(幂等性和安全性是由RESTful API接口设计标准及规范提出的)简单的说,HTTP 的 method 就是一个残缺不全的设计缺陷,而 RESTful 则非要想去合理使用这个 method。
实际上设计接口用 GET、POST 就足够了,GET 做幂等操作(查询类),POST 做非幂等的修改类。
但实际上你还会遇上条件复杂的组合查询不得不用 POST 来实现( GET 有参数长度限制),
这时 RESTful 会推荐你使用 POST,这是 RESTful 的妥协,也恰好证明了 HTTP 的缺陷。不要纠结这种问题了,好的文档比什么都重要。。
摘自: https://www.v2ex.com/t/373770
POST和GET谁更安全
get更安全
get比post安全? -->get对于服务器是安全的–> get是幂等的,post是非幂等的
post更安全
① GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。
② 浏览器有跨域访问的限制,如果是get的话,jsonp很容易突破跨域的限制。但是post跨域比较不容易。
参考资料:https://blog.csdn.net/qq_38610536/article/details/83584681
https://blog.csdn.net/qq_41635167/article/details/83720985
HTTP各种请求方法的的幂等性和安全性相关推荐
- http 安全性和幂等性_HTTP方法:幂等性和安全性
http 安全性和幂等性 幂等性和安全性是HTTP方法的属性. HTTP RFC定义了这些属性,并告诉我们哪些HTTP方法是安全且幂等的. 服务器应用程序应确保正确执行安全和幂等的语义,如客户端期望的 ...
- HTTP方法:幂等性和安全性
幂等性和安全性是HTTP方法的属性. HTTP RFC定义了这些属性,并告诉我们哪些HTTP方法是安全且幂等的. 服务器应用程序应确保正确执行安全和幂等的语义,如客户端期望的那样. 安全的HTTP方法 ...
- HTTP请求方法详解
Web开发最常见的就是HTTP(超文本传输协议)通信协议,该协议(HTTP)设计的目的是确保服务器与客户端之间的正确通信, HTTP请求方法并不是只有GET和POST,只是最常用的.据RFC2616标 ...
- HTTP 请求方法(GET、POST 和 PUT)
HTTP 请求方法包括 GET.POST 和 PUT 等,它们在用途.语义和实现方式等方面有所不同. GET 方法:该方法用于从服务器获取资源,是一种安全的请求方法,因为它只是从服务器获取信息,不会对 ...
- HTTP请求方法:GET、HEAD、POST、PUT、DELETE、CONNECT、OPTIONS、TRACE 说明
平时的Rest开发,用到的都是GET,POST,PUT,DELETE类型的请求.但Rest支持的请求类型不止前面4种,还有其他几种. 超文本传输协议(HTTP, HyperText Transfer ...
- HTTP协议漫谈 - HTTP协议请求方法
前言 在上一篇文章<HTTP协议漫谈 - HTTP协议历史和报文结构>中介绍了HTTP协议的历史和版本变化,以及HTTP协议报文的总体结构. 按照HTTP/1.1 RFC文档中的定义,HT ...
- Http请求方法的区别
HttpRequest Method 一.HttpRequest 请求方法 二.POST和PUT请求的区别 1.POST请求非幂等性操作 2.根据幂等性区分POST与PUT的使用 三.GET和POST ...
- HTTP简介、请求方法与响应状态码
点击上方"方志朋",选择"置顶或者星标" 你的关注意义重大! Https相关的文章,请看这一篇:TCP.IP协议族之数字签名与HTTPS详解 接下来想系统的回顾 ...
- restful可以转发么_什么是RESTFUL?REST的请求方法有哪些,有什么区别?
大家好,我是IT修真院上海分院第3期学员,一枚正直善良的java程序员,今天给大家分享一下,修真院java任务中的一个知识点:什么是RESTFUL?REST的请求方法有哪些,有什么区别? restFu ...
最新文章
- 没有顶会的CV/NLP方向的博士生毕业出路在哪里?
- python计算特征与目标的相关性并可视化
- lr mysql 增删改查_Python对MySQL进行增删查改
- 启动ucosii之OSInit()
- mysql dql_Mysql中的DQL查询语句
- 【java】JDK8的HashMap
- 诊断域帐号被锁定的原因
- Java-线程中sleep()、wait()和notify()和notifyAll()、suspend和resume()、yield()、join()、interrupt()的用法和区别
- AI 时代,中国技术创新如何弯道超车?
- Goland的常用快捷键
- Vue项目部署到SpringBoot工程下
- 【学习】在Windows10平台使用Docker ToolBox安装docker(一)
- jar包里面文件修改
- 数据仓库:金融/银行业主题层划分方案
- wangEditor - 支持word上传的富文本编辑器
- 瑞士酒店管理大学计算机专业,瑞士DCT国际酒店管理学院生活费用详细介绍
- 2021-2027全球及中国远红外桑拿行业研究及十四五规划分析报告
- 说得清的Epoll原理
- R语言统计分析之方差分析
- 小傻蛋的妹妹跟着小甲鱼学习Python的第七节007