GET 与 POST(计算机网络)

GET :从服务器获取指定的资源。

POST :根据请求负荷(报文body)对指定的资源做出处理。

GET 和 POST 方法都是安全和幂等的吗?

在 HTTP 协议里安全和幂等的概念:

  • 「安全」:请求方法不会「破坏」服务器上的资源。
  • 「幂等」:多次执行相同的操作,结果都是「相同」的。

从 RFC 规范定义的语义来看:

  • GET 方法安全且幂等的,因为它是「只读」操作,无论操作多少次,服务器上的数据都是安全的,且每次的结果都是相同的。所以,可以对 GET 请求的数据做缓存,这个缓存可以做到浏览器本身上(彻底避免浏览器发请求),也可以做到代理上(如nginx),而且在浏览器中 GET 请求可以保存为书签
  • POST 因为是「新增或提交数据」的操作,会修改服务器上的资源,所以是不安全的,且多次提交数据就会创建多个资源,所以不是幂等的。所以,浏览器一般不会缓存 POST 请求,也不能把 POST 请求保存为书签

GET 方法是安全、幂等、可被缓存的。

POST 不安全,不幂等,(大部分实现)不可缓存。

但是实际过程中,开发者不一定会按照 RFC 规范定义的语义来实现 GET 和 POST 方法。比如:

  • 用 GET 方法实现新增或删除数据的请求,这样实现的 GET 方法就不是安全和幂等。
  • 用 POST 方法实现查询数据的请求,这样实现的 POST 方法就是安全和幂等。

并不能说 GET 不如 POST 安全的。

因为 HTTP 传输的内容都是明文的,虽然在浏览器地址拦看不到 POST 提交的 body 数据,但是只要抓个包就都能看到了。

所以,要避免传输过程中数据被窃取,就要使用 HTTPS 协议,这样所有 HTTP 的数据都会被加密传输。

GET 请求可以带 body 吗?

理论上,任何请求都可以带 body 。只是因为 RFC 规范定义的 GET 请求是获取资源,所以根据这个语义不需要用到 body。

另外,URL 中的查询参数也不是 GET 所独有的,POST 请求的 URL 中也可以有参数的。

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

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

相关文章

Matlab之提高交叉定位点的定位精度

通过测向交叉定位的方法,按理只需2根测向线即可得出定位点的位置。但由于误差的存在,求出的定位点位置存在一定的偏差。为了得到更加精确的定位点位置,需要对定位点进行冗余测量,从而得到多个定位点,然后通过定位点估计…

redis分布式锁-----基于Redis的SETNX命令的简单分布式锁实现

Redis的SETNX命令的简单分布式锁实现的Java示例 首先&#xff0c;确保你已经引入了Jedis这个Java Redis客户端库。你可以通过Maven或Gradle来添加依赖。 1、Maven依赖 <dependency><groupId>redis.clients</groupId><artifactId>jedis</artifact…

Docker一键部署MySQL 8

Docker一键部署MySQL 8 脚本下载 下载路径&#xff1a;mysql8.0.20.sh 使用FTP 工具或rz 命令将脚本上传到服务器 授权 [rootxxx~]# chmod x mysql8.0.20.sh执行脚本 [rootiZm5e4qautzfi19sq8s7aeZ ~]# ./mysql8.0.20.sh 初始化MySQL部署... 拉取MySQL 8.0.20 镜像... 8.…

(一)认识微服务

1. 什么是微服务 微服务是分布式架构的一种。 1.1 微服务技术 &#xff01; Spring Cloud 分布式架构就是要把服务进行拆分&#xff0c;拆分的过程会产生一系列问题需要解决&#xff0c;而Spirng Cloud 只是解决了服务拆分的过程中的服务治理问题&#xff0c;所以一个完整的…

GRE和MGRE综合实验

实验拓扑图 实验思路 根据图中所属网段&#xff0c;配置ip地址和网关R1,R2,R3,R4配置缺省路由&#xff0c;可以是公网互通使用ppp验证&#xff0c;R1与R5为PAP验证&#xff0c;R5:aaa地址池&#xff0c;创建用户名以及密码&#xff0c;同时进行pap服务认证&#xff0c;同时在…

playwright 对象是 Playwright 框架中的核心对象

Playwright对象是Playwright框架中的一个重要对象&#xff0c;它充当了管理和控制浏览器实例的中介&#xff0c;并提供了访问不同浏览器引擎功能的接口。Playwright库为Web浏览器自动化提供了一组强大的API&#xff0c;可以轻松地操作和控制Chromium、Firefox和WebKit浏览器。p…

(root用户与非root用户)linux下安装最新版tmux

下载依赖包 tmux需要两个依赖包&#xff0c;libevent和ncurses&#xff0c;在tmux的github wiki官网可以找到对应的源码下载地址: libeventncursestmux 下载三个包的tar.gz文件 root用户与非root用户 下列安装指令中&#xff0c;如果是root用户想安装到系统级目录下&#x…

使用nvm管理nodejs版本

文章目录 1、下载NVM2、选择NVM安装3 、查询版本号&常用命令4、nvm命令安装指定版本node4.1 安装指定node4.2 查看是否安装成功4.3 切换node版本到你想要的版本4.4 再次查看nvm版本列表4.5 nvm其他常用命令 这个是每个全能前端经常会用到的&#xff0c;之前用过现在重装了&…

如何Hook [NSString stringWithFormat] 代码hook stringWithFormat中替换NSString字符串

怎么hook stringWithFormat方法 id stringWithFormat(id self, SEL op,id obj1, ...); id stringWithFormat(id self, SEL op,id obj1, ...){va_list args;va_start(args, obj1);//等价实现方法NSString *result [[NSMutableString alloc] initWithFormat:obj1 arguments:arg…

BitVM2:比特币上的无需许可验证

1. 引言 前序博客有&#xff1a; 基于BitVM的乐观 BTC bridgeBitVM&#xff1a;Bitcoin的链下合约Bitcoin Bridge&#xff1a;治愈还是诅咒&#xff1f; 最初的 BitVM 设计仅限于两方设置。BitVM2结合了并行和冗余实例&#xff0c;以引入基于 1-of-n 诚实假设的多方配置。这…

Android 自定义EditText

文章目录 Android 自定义EditText概述源码可清空内容的EditText可显示密码的EditText 使用源码下载 Android 自定义EditText 概述 定义一款可清空内容的 ClearEditText 和可显示密码的 PasswordEditText&#xff0c;支持修改提示图标和大小、背景图片等。 源码 基类&#xf…

WebViz可视化

WebViz可视化 Webviz是一个基于Web的可视化工具&#xff0c;意味着您可以通过浏览器/APP访问它&#xff0c;而不需要安装额外的软件。这对于远程访问和团队协作非常方便。 Foxglove是一个开源的工具包&#xff0c;包括线上和线下版。旨在简化机器人系统的开发和调试。它提供了…

Gitea 的详细介绍

什么是 Gitea&#xff1f; Gitea 是一个开源、轻量级的自托管 Git 服务&#xff0c;它允许用户搭建类似于 GitHub 或 GitLab 的代码托管平台。由于采用 Go 语言开发&#xff0c;Gitea 具有高效的性能和跨平台特性&#xff0c;适合个人开发者或小团队使用。 Gitea 的特点 轻量…

蓝桥杯第十三届电子类单片机组程序设计

目录 前言 单片机资源数据包_2023 一、第十三届比赛省赛 1.比赛题目 2.赛题解读 二、部分功能实现 1.继电器的开启与关闭 2.长按切换显示状态功能的实现 3.对于温度传感器小数部分的处理 4.其他处理 1&#xff09;关于数码管显示小数的处理 2&#xff09;关于5s后继…

SpringBoot + LiteFlow(二):LiteFlow特性和环境支持

项目特性 组件定义统一: 所有的逻辑都是组件,为所有的逻辑提供统一化的组件实现方式,小身材,大能量。规则轻量: 基于规则文件来编排流程,学习规则入门只需要5分钟,一看即懂。规则多样化: 规则支持xml、json、yml三种规则文件写法方式,喜欢哪种用哪个。任意编排: 再复…

简易TCP服务器通信、IO多路复用(select、poll、epoll)以及reactor模式。

网络编程学习 简单TCP服务器通信三次握手和四次挥手状态转换总结client和server通信写法server端client端 怎么应对多用户连接&#xff1f;缺点 IO多路复用select优缺点 pollpoll写法和改进点 epoll&#xff08;使用最多&#xff0c;重中之重&#xff09;epoll写法和改进点LT模…

结构体类型,结构体变量的创建和初始化 以及结构中存在的内存对齐

一般结构体类型的声明 struct 结构体类型名 { member-list; //成员表列 }variable-list; //变量表列 例如描述⼀个学⽣&#xff1a; struct Stu { char name[20]; //名字 int age; //年龄 char sex[5]; //性别 }&#xff1b; //结构体变量的初始化 int main() { S…

牛客NC30 缺失的第一个正整数【simple map Java,Go,PHP】

题目 题目链接&#xff1a; https://www.nowcoder.com/practice/50ec6a5b0e4e45348544348278cdcee5 核心 Map参考答案Java import java.util.*;public class Solution {/*** 代码中的类名、方法名、参数名已经指定&#xff0c;请勿修改&#xff0c;直接返回方法规定的值即可…

Modelsim手动仿真实例

目录 1. 软件链接 2. 为什么要使用Modelsim 3. Modelsim仿真工程由几部分组成&#xff1f; 4. 上手实例 4.1. 新建文件夹 4.2. 指定目录 4.3. 新建工程 4.4. 新建设计文件&#xff08;Design Files&#xff09; 4.5. 新建测试平台文件&#xff08;Testbench Files&…

企业数据被新型.rmallox勒索病毒加密,应该如何还原?

.rmallox勒索病毒为什么难以解密&#xff1f; .rmallox勒索病毒难以解密的主要原因在于其采用了高强度的加密算法&#xff0c;并且这些算法被有效地实施在了病毒程序中。具体来说&#xff0c;.rmallox勒索病毒使用了RSA和AES这两种非常成熟的加密算法。RSA是一种非对称加密算法…