HTTP方法:幂等性和安全性

幂等性和安全性是HTTP方法的属性。 HTTP RFC定义了这些属性,并告诉我们哪些HTTP方法是安全且幂等的。 服务器应用程序应确保正确执行安全和幂等的语义,如客户端期望的那样。

安全的HTTP方法

如果HTTP方法不更改服务器状态,则认为它们是安全的。 因此,安全方法只能用于只读操作。 HTTP RFC定义了以下安全方法:GET,HEAD,OPTIONS和TRACE。

实际上,通常不可能以不改变任何服务器状态的方式来实现安全方法。

例如,GET请求可能会创建日志或审核消息,更新统计值或触发服务器上的缓存刷新。

RFC在这里告诉我们:

自然地,不可能确保服务器不会由于执行GET请求而产生副作用; 实际上,一些动态资源认为该功能。 这里的重要区别是用户没有要求副作用,因此不能对它们负责。

幂等HTTP方法

幂等意味着多个相同的请求将具有相同的结果。 因此,发送请求一次还是多次都没有关系。 以下HTTP方法是幂等的:GET,HEAD,OPTIONS,TRACE,PUT和DELETE。 所有安全的HTTP方法都是幂等的,但PUT和DELETE是幂等的,但并不安全。

请注意,幂等性并不意味着服务器必须对每个请求以相同的方式进行响应。

例如,假设我们要使用DELETE请求通过ID删除项目:

 DELETE /projects/ 123 HTTP/ 1.1 

作为响应,我们可能会收到HTTP 200状态代码,指示该项目已成功删除。 如果我们再次发送此DELETE请求,则可能会收到HTTP 404作为响应,因为该项目已被删除。 第二个请求没有更改服务器状态,因此即使我们得到不同的响应,DELETE操作也是幂等的。

幂等性是API的一项积极功能,因为它可以使API更具容错性。 假设客户端存在问题,并且请求被多次发送。 只要使用幂等操作,就不会在服务器端造成任何问题。

HTTP方法概述

下表总结了哪些HTTP方法是安全的和幂等的:

HTTP方法 安全 等幂的
得到
选项
跟踪
没有
删除 没有
开机自检 没有 没有
补丁 没有 没有

翻译自: https://www.javacodegeeks.com/2020/02/http-methods-idempotency-and-safety.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/340129.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java a[i].setx(-1);_java – setX和setY在尝试定位图像时不起作用

我在使用setX上的setX和setY为我的JavaFX程序中定位图像时遇到问题.我不确定是什么问题?感谢任何给予的帮助!这是我的代码:Image rocket2 new Image("img/Rocket.png");ImageView iv1 new ImageView(rocket2);iv1.setX(60);iv1.s…

go环境搭建_学习的golang第一步,搭建我们运行的环境,go! go! go

这是Golang教程系列中的第一个教程。本教程介绍了Go,并讨论了选择Go优于其他编程语言的优势。我们还将学习如何在Mac OS,Windows和Linux中安装Go。介绍Go也称为Golang是由Google开发的一种开源,编译和静态类型的编程语言。创造Go的关键人物是…

如何在Java中将数组转换为列表

你好朋友, 在本教程中,我们将学习将数组转换为List的各种方法。 package com.blogspot.javasolutionsguide;import com.google.common.collect.Lists; import org.apache.commons.collections4.CollectionUtils;import java.util.ArrayList; import ja…

html5网页制作代码_HTML5的网页设计教程

关注小编,教你如何制作网页HTML5是超文本标记语言(HyperText Markup Language)的第五代版本,它是书写网页代码的一种规范、一种标准。它通过标记符号来标记要显示的网页中的各个部分。浏览器根据这个标准显示其中的内容(如:文字如何处理&…

java命令框编译代码的方式_在命令行模式下如何编译运行Java代码

由于已经习惯了在Windows环境中进行开发,最近在尝试将开发环境转移到Linux上面。遇到一篇值得参考的外文,特翻译记录一下。【只翻译了部分】一直被集成开发环境和自动构建工具“溺爱”着,我最近意识到我居然一点儿都不会在命令行模式下去运行…

hibernate jpa_JPA /Hibernate刷新策略初学者指南

hibernate jpa介绍 在我以前的文章中,我介绍了实体状态转换 对象关系映射范例。 当刷新当前持久性上下文时,所有管理实体状态转换都将转换为关联的数据库语句。 Hibernate的刷新行为并不总是像人们想象的那样明显。 后写 Hibernate尝试将持久性上下文刷…

aop+注解 实现对实体类的字段校验_SpringBoot实现通用的接口参数校验

来自:掘金,作者:cipher链接:https://juejin.im/post/5af3c25b5188253064651c76原文链接:http://www.ciphermagic.cn/spring-boot-aop-param-check.html本文介绍基于Spring Boot和JDK8编写一个AOP,结合自定义…

java基础分享_一、java基础教程

1、java是一门比较纯粹的面向对象编程语言,所以java的所有代码都必须写在类的内部。1.1 java的可执行文件后缀名是".java",例如HelloWorld.java,并且每个可执行文件内部,必须有且仅有一个public公共类/公共接口/公共抽象…

Spring Boot自定义横幅生成

每当我们启动Spring Boot应用程序时,都会显示如下所示的文本消息。 这称为横幅。 现在,如果我们可以创建一个特定于我们的Spring Boot应用程序的自定义横幅并使用它代替默认的Spring Boot横幅,那将不是一件很棒的事。 有很多方法可以生成和使…

java简单递归算法_java递归算法的简单示例

java递归算法的简单示例今天参加笔试,要求用递归实现1357……没写出来,蛋疼。。。。下面复习一下,自己尝试着写还是没有写出来。。。。。没有写出来的关键是自己不知道该如何实现求和、实现出口递归实现的关键是:1.出口的设计2.递…

java等待_Java学习:等待唤醒机制

等待唤醒机制线程的状态NEW 至今尚未启动的线程处于这种状态RUNNABLE 正在Java虚拟机中执行的线程处于这种状态BLOCKED 受阻塞并等待某个监视器锁的线程处于这种状态WAITING 无限期的等待另一个线程来执行某一待定操作的线程处于这种状态TIMED_WAITNG 等待另一个线程来执行取…

游戏ai 行为树_游戏AI –行为树简介

游戏ai 行为树游戏AI是一个非常广泛的主题,尽管有很多资料,但我找不到能以较慢且更易理解的速度缓慢介绍这些概念的东西。 本文将尝试解释如何基于行为树的概念来设计一个非常简单但可扩展的AI系统。 什么是AI? 人工智能是参与游戏的实体表现…

java适配器模式应用_java笔记--适配器模式的运用

适配器模式的运用主要应用:可以在符合OCP原则(开笔原则)的基础上,为类增加新的功能。在现有功能上添加新的功能时无须修改原有功能代码。主要角色:目标角色:就是期待得到的接口,如给汽车添加GPS的接口;源角色&#xff…

java构造器_Java构造器就是这么简单!

前言理解构造器之前,首先我们需要了解Java中为什么要引入构造器,以及构造器的作用。在很久之前,程序员们编写C程序总会忘记初始化变量(这真的是一件琐碎但必须的事),C引入了 构造器(constructor) 的概念&am…

JavaFX技巧32:需要图标吗? 使用Ikonli!

动机 自2013年以来,我一直在编写JavaFX应用程序和库的代码,它们的共同点是,我需要找到可以用于它们的良好图标/图形。 作为前Swing开发人员,我首先使用图像文件,GIF或PNG。 通常,我会从IconExperience&…

mysql索引是什么 优点和缺点_mysql索引的类型和优缺点

现在来介绍了数据库索引,及其优、缺点。针对MySQL索引的特点、应用进行了详细的描 述。分析了如何避免MySQL无法使用,如何使用EXPLAIN分析查询语句,如何优化MySQL索引的应用。本文摘自《MySQL 5权威指南》(3rd)的8.9节。索引是一种特殊的文件…

pycharm和python在mac里安装_MAC安装python-opencv及在pycharm下的配置

基础:Mac os 10.13.4;pycharm2018.1;Python3.6.5小白一个,某日突发奇想,想利用opencv实现面部识别,但在网上查了一圈,在配置时都太麻烦,什么下载源码,用Xcode或者CMake编…

内置对象和内置函数_内置假对象

内置对象和内置函数尽管模拟对象是进行单元测试的理想工具,但通过模拟框架进行模拟可能会将您的单元测试变成难以维护的混乱。 这种复杂性的根本原因是我们的对象太大。 他们有很多方法,这些方法返回其他对象,这些对象也有方法。 当将此类对…

java应用部署docker_Docker部署JavaWeb项目实战

摘要:本文主要讲了怎样在Ubuntu14.04 64位系统下来创建一个执行Java web应用程序的Docker容器。一、下载镜像、启动容器1、下载镜像先查看镜像docker images记住这个Image ID,下面我们启动容器须要用到它。假设看到以上输出,说明您能够使用“…

python解析http数据包_如何在python中嗅探HTTP数据包?

I want to sniff all the HTTP packets in my computer via python(version2.6.. is this possible? can I do it with scapy, or without other external modules?解决方案Scrapy is only for extracting data from webpages or similar structured documents.To actually r…