谈谈HTTP协议的方法里,GET和POST的区别?我来教你如何回答~

news2024/11/26 3:56:06

目录

前言

一、什么是GET、POST?

1.1GET

1.2POST

二、如何轻松回答?

第一步、直接盖棺定论:

第二步、谈细节上的区别:


前言

        要想回答好这个问题,咱们先来了解以下什么是GET、POST方法,有哪些细节要注意;


一、什么是GET、POST?

1.1GET

        GET是HTTP请求最常用的方法,本质上就是浏览器通过GET方法,向服务器发起GET请求,从服务器拿到相应的数据;

什么时候会触发这个请求?

1.浏览器的地址栏中输入URL,就会触发GET;

2.HTML里的link、a、img、script会触发GET请求;

3.html中的form标签可以构造出GET请求;

4.使用 JavaScript 的 ajax 也可以构造 POST 请求

很多人的误区:“GET请求长度长度最多是1KB / 2KB ...?”;这个说法真的正确吗?

        HTTP 协议由 RFC 2616 标准定义, 标准原文中明确说明: "Hypertext Transfer Protocol -- HTTP/1.1," does not specify any requirement for URL length.

        也就是说,标准中,并未对URL的长度做出限制;其实虽然没有提到有长度上限,但是浏览器和HTTP服务器在实现的时候,可能有长度上线,也可能没有,具体要看如何实现了;

1.2POST

        POST是用来将用户输入的数据发送给服务器的一种方法;(例如一些网站的登录界面,当你输入账号和密码,提交以后,便会执行这个方法);

什么时候会触发这个请求?

1.通过 HTML 中的 form 标签可以构造 POST 请求

2.使用 JavaScript 的 ajax 也可以构造 POST 请求

POST请求的特点

1.POST请求中,首行第一部分为POST;

2.URL一般没有query string;

3.header 部分有若干个键值对结构.

4.body部分的数据格式有很多种,一般不会为空;


二、如何轻松回答?

第一步、直接盖棺定论:

        GET和POST没有本质区别,使用GET的场景基本都可以使用POST代替,使用POST的场景也可以用GET代替;

第二步、谈细节上的区别:

细节一:(语义上)

        GET语义:从服务器获取一个数据;

        POST语义:往服务器提交一个数据;

        虽然HTTP协议说是这么说,但是很多程序员还是没有遵守这个约定~

细节二:(使用习惯上)

        习惯上,给服务器传递数据,GET通常放在URL的query string中,POST通常是放在body;中;

        GET能放在body中吗?可以滴,HTTP客户端支持,但是浏览器不一定支持;

        POST能放在query string中吗?可以呢!浏览器和客户端都支持~

细节三:(幂等)

        GET请求建议实现成“幂等”的,POST不做要求;(幂等简单来说就是,输入是确定的,输出也是确定的);

        服务器设计时会提供一些api:api传入的参数视为输入,返回的结果视为输出;基于GET的api建议设置成幂等的,POST不做要求;

细节四:(缓存)

        在幂等的基础上,GET请求结果是可以被缓存的,POST一般不缓存;

        这时浏览器默认的,若当前GET时幂等的,就不做处理,让浏览器缓存;若当前GET不是幂等的,就需要通过特殊技避免产生缓存;(技巧就是让GET请求的URL都不同,通过特殊的query string保证URL不同);

POST比GET更安全,这个说法正确吗?

        虽然在登录界面GET把参数放到的URL中确实不好,但是放到POST的body中,也一样没有更安全;因为咱们平时谈到的是否安全,是指:你的数据被黑客截获后,会不会对你造成信息泄漏这样的影响,只要你的代码没有进行加密,就谈不上安全;


 

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

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

相关文章

阿宇wifi球机如何连接手机

首先下载APP,请见以下三种方式: (1)至APP Store、各大应用市场搜索 “智U”,下载并安装APP。  (2)登录ezcloud.uniview.com官网,扫描界面右下方智U APP二维码,下载并…

SpringBoot线上服务假死解决,CPU内存正常

背景 开发小伙伴都知道线上服务挂掉,基本都是因为cpu或者内存不足,出现GC频繁OOM之类的情况。本篇文章区别以上的情况给小伙伴们 带来不一样的服务挂掉。 还记得哔哩哔哩713事故中那场诡计多端的0吗? 对就是这个0,和本次事故没关…

Python基础知识入门(二)

Python基础知识入门(一) 一、数字类型 Python 数字数据类型用于存储数值。数据类型是不允许改变的,如改变数字数据类型的值,将重新分配内存空间。 1.数字函数 函数 描述 abs(x) 返回数字的绝对值。如abs(-10) 返回 10。 fa…

前端小游戏——推箱子

最近刚刚更新完了HTML,CSS的万字总结,有很多人已经学习完了文章,感觉反馈还不错,今天,用HTML,CSS,JS的知识编写了一个童年经典游戏 - 推箱子,供学习参考。 推荐学习专栏&#xff1a…

EdrawMax Ultimate v12.0 图表和流程图

EDraw Max 是一个多合一的应用程序,用作演示构建器、图表创建者、可视化业务规划师和协作空间(用于快速共享图表和模型并接收反馈)。 该软件可用于哪些潜在用途? 任何人都可以从 EDraw Max 中受益。它所针对的主题和感兴趣的领域…

【EasyRL学习笔记】第十一章 模仿学习

文章目录一、前言二、行为克隆三、逆强化学习四、第三人称视角模仿学习五、序列生成和聊天机器人六、关键词总结七、习题一、前言 模仿学习 (imitation learning,IL) 讨论的问题是,假设我们连奖励都没有,要怎么进行更新以及让智能体与环境交…

黑马学Docker(二)

目录: (1)容器命令介绍 (2) 容器命令案例1 (3)容器命令案例2 (4)容器命令练习 (5)数据卷命令 (6) 数据卷挂在案例1 …

数字孪生:实现保险行业数字化转型

现如今,数据分析在各个行业都在广泛的使用,保险行业也不例外。在数字化浪潮席卷全球的时代,如何利用数字化技术驱动业务增长,实现数字化转型,是目前保险行业需要思考的问题。 可视化技术能够助力保险机构更好地解决互联…

[hive]维度模型分类:星型模型,雪花模型,星座模型|范式|纬度建模|数仓分层

数仓(十八)数仓建模以及分层总结(ODS、DIM、DWD、DWS、DWT、ADS层) - 墨天轮 一、维度模型分类:星型模型,雪花模型,星座模型 1、星型模型 星型模型中只有一张事实表,以及0张或多张维度表,事实与纬度表通过主键外键相关联&#…

vue项目 API接口封装

vue项目 API接口封装 01.基础配置创建 分别创建如下文件和文件夹 Object │ .env.development │ .env.production └─src├─api│ index.js│ login.js├─utils│ request.js.env.development 和 .env.production 配置生产环境和开发环境移步&#xf…

Java程序员不得不会的124道面试题(含答案)

1)Java 中能创建 volatile 数组吗? 能,Java 中可以创建 volatile 类型数组,不过只是一个指向数组的引用,而不是整个数组。我的意思是,如果改变引用指向的数组,将会受到 volatile 的保护&#x…

多线程常见锁的策略

文章目录前言一、乐观锁和悲观锁1.1 定义1.2 生动有趣滴例子1.3 版本号机制二、读写锁2.1 读写锁的由来2.2 生动有趣de例子2.3 ReentrantReadWriteLock 类三、重量级锁与轻量级锁3.1 定义3.2 生动活泼の例子3.3 自旋锁(Spin Lock)四、公平锁与非公平锁五…

一名程序员的电脑桌面

配置: 酷呆桌面注册表隐藏快捷方式箭头图标开启桌面模式自动隐藏任务栏 酷呆桌面 在选择酷呆之前,一直是使用的Fences,他的桌面切换功能非常赞,适合划分工作区。但由于强迫症实在是忍受不了肉眼可见的掉帧、黑背景bug&#xff0…

简简单单搞一个实用的Android端搜索框

Hello啊老铁们,今天带来一个非常实用的自定义搜索框,包含了搜索框、热门搜索列表、最近搜索列表等常见的功能,有类似的,大家可以直接复用,将会大大节约您的开发时间,有一点,很负责任的告诉大家&…

最全面的Mybatis教程,从“开局”到“通关”,Ready Go!

前言 本文为SSM框架 【Mybatis】 相关知识,MyBatis 是一款优秀的半自动的ORM持久层框架,下边将对Mybatis的简介、Mybatis的CRUD实现,Mybatis的配置文件,Mybatis的日志配置,resultMap详解,分页实现&#xff…

Vulnhub_CengBox

目录 一 环境异常处理 (一)nat设置无法正常获取地址 1 单用户模式进入命令行 2 passwd更改 3 修改网络配置文件 二 环境测试 (一)信息收集 1 端口服务 2 目录扫描 (二)漏洞测试 1 SQL…

SpringBoot项目的创建(一):通过idea的Spring Initializr来创建(需联网以下载SpringBoot相关的模板)

SpringBoot项目的创建1. 环境准备2. 创建SpringBoot项目3. 创建的SpringBoot项目结构如下4. 添加代码测试web页面效果1. 环境准备 安装jdk和idea,tomcat可不安装,有内置的tomcat 2. 创建SpringBoot项目 打包成war后,需要部署到tomcat中再运…

大数据培训技术操作Flume测试监控

大数据培训技术操作Flume测试监控 1)修改/opt/module/flume/conf目录下的flume-env.sh配置: JAVA_OPTS”-Dflume.monitoring.typeganglia -Dflume.monitoring.hosts192.168.9.102:8649 -Xms100m -Xmx200m” 2)启动Flume任务 [atguiguh…

关于微前端,你理解到究极奥义了么?

微前端的起源 在微前端这个概念出现之前,我们或多或少都能够联想到另一个词性上有些相似的概念微服务,它从出现后便一直都很火热,并不断催生着后端架构体系的演进,而此刻我们如果细品一下这微字头的两兄弟,探究他们的诞…

大白鲨优化算法(WSO)(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…