【HTTP】这一次,终于彻底弄清了POST和GET请求的区别

Python爬虫POST请求实战:从原理到反爬应对 HTTP协议是Web数据交互的基石,其中GET与POST是两种核心请求方法。GET请求通过URL明文传输参数,适用于数据获取;而POST请求则将数据封装在请求体中提交,支持更安全、大量的数据传输,常用于表单提交、API交互等场景。理解POST请求的`application/json`、`application/x-www-form-urlencoded`等数据格式及其应用原理,是处理动态网页数据抓取、实现自动化数据采集的关键技术。在Python爬虫开发中,结合`requests`库发送POST请求,并应对* 阅读详情

1 引言

我想大家在面试中应该经常有被问到POST和GET请求的区别,很多人都会回答诸如POST比GET安全,GET比POST传输的长度要少之类的,然而,这会是面试官想要的答案么?这样的回答听上去难免像是囫囵吞枣的背诵下来的,并且就算是背,多少也得知道一下原理呀。今天,少侠就带着问题和大家一起看看POST和GET请求的区别。

2 HTTP协议

2.1 HTTP协议的特点

首先,我们应该知道,无论是POST还是GET请求,都是基于超文本传输协议(HTTP)的,而HTTP协议是TCP/IP协议族的应用层协议。
HTTP协议客户端请求request消息包括以下格式:请求行(request line)、请求头部(header)、空行、请求数据;
在这里插入图片描述

服务端响应response也由四个部分组成,分别是:响应行、响应头、空行、响应体。
在这里插入图片描述

2.2 请求方法

HTTP协议定义了多种请求方式,具体如下:
GET:获取资源,用来请求访问已被URI(统一资源标志符,和URL是包含和被包含的关系)识别的资源。
POST:用来传输实体的主体,虽然GET也可以实现,但是一般不用。
PUT:传输文件。但是鉴于PUT方法自身不带验证机制,任何人都可以上传文件,存在安全性问题,因此一般网站都不采用该方法。
HEAD:获得报文首部。和GET请求一样,只是不返回报文主体部分。
DELETE:删除文件。同样不带验证机制,存在安全性问题。
OPTIONS:询问指定的请求URI支持哪些方法。
TRACE:追踪路径,让Web服务器将之前的请求通信环回给客户端的方法。
CONNECT:要求在与代理服务器通信时建立隧道,实现隧道协议进行TCP通信。

3 POST和GET请求区别的常见误区

3.1 请求参数长度限制:GET请求长度最多1024kb,POST对请求数据没有限制

关于此点,在HTTP协议中没有对URL长度进行限制,这个限制是不同的浏览器及服务器由于有不同的规范而带来的限制。

3.2 GET请求一定不能用request body传输数据

GET可以带request body,但不能保证一定能被接收到。如果你用GET服务,在request body偷偷藏了数据,不同服务器的处理方式也是不同的,有些服务器会帮你读出数据,有些服务器直接忽略。

3.3 POST比GET安全性要高

这里的安全是相对性,通过GET提交的数据都将显示到URL上,页面会被浏览器缓存,其他人查看历史记录会看到提交的数据,而POST不会。另外GET提交数据还可能会造成CSRF攻击。

3.4 GET产生一个TCP数据包,POST产生两个TCP数据包

对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200 OK(返回数据);
而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 OK(返回数据)。注意,尽管POST请求会分两次,但body 是紧随在 header 后面发送的,根本不存在『等待服务器响应』一说。

4 POST和GET请求的区别小结

请求参数:GET请求参数是通过URL传递的,多个参数以&连接,POST请求放在request body中。
请求缓存:GET请求会被缓存,而POST请求不会,除非手动设置。
收藏为书签:GET请求支持,POST请求不支持。
安全性:POST比GET安全,GET请求在浏览器回退时是无害的,而POST会再次请求。
历史记录:GET请求参数会被完整保留在浏览历史记录里,而POST中的参数不会被保留。
编码方式:GET请求只能进行url编码,而POST支持多种编码方式。
对参数的数据类型:GET只接受ASCII字符,而POST没有限制。

少侠还想补充说明一点,就是通过浏览器地址栏输入URL访问资源的方式都是GET请求。

点点关注,不会迷路

GET请求和POST请求的区别(详细) Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE。URL全称是资源描述符,我们可以这样认为:一个URL地址,它用于描述一个网络上的资源,而HTTP中的GET,POST,PUT,DELETE就对应着对这个资源的查,改,增,删4个操作。到这里,大家应该有个大概的了解了,GET一般用于获取/查询资源信息,而POST一般用于更新资源信息。 立即下载

相关推荐

手把手教你用STM32CubeMX配置Bootloader:从分区设置到跳转逻辑详解(含完整代码示例)

本文详细介绍了如何使用STM32CubeMX配置STM32 Bootloader,从基础概念到完整实现。涵盖Flash分区设置、跳转逻辑、固件升级协议设计等关键步骤,并提供完整代码示例。适合嵌入式开发者快速掌握Bootloader开发技巧,提升STM32固件升级能力。

weixin_29169505的博客 284

get和post区别

摘抄链接:https://www.cnblogs.com/logsharing/p/8448446.html 最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数。 GET在浏览器回退时是无害的,而POST会再次提交请求。 GET产生的URL地址可以被Bookmark,而POST不可以。 GET请求会被浏览器主动cache,而POST不会,除...

fxy_cdns的博客 248

ROS2前置基础教程 | 使用CMakeLists.txt编译ROS2节点

答案是有的,那就是cmake工具。cmake通过调用CMakeLists.txt直接生成Makefile。 2.新建CMakeLists.txt 在新建,输入下面内容。 3.编译代码 我们一般会创建一个新的目录,运行cmake并进行编译,这样的好处是不会显得那么乱。 创建好文件夹,接着运行cmake指令,代表到上级目录找。 运行完cmake你应该可以在build目录下看到cmake自动生成的Makefile了,接着就可以运行make指令进行编译 运行完上面的指令,就可以在build目录下发现节点了。ROS2

生活不止眼前的苟且 1万+

关于http post两阶段提交的一些问题

之前一些应用经常会出现请求超时而引起用户体验极度下降,我们每个应用都会做用户体验的优化。当然有很多其它原因,但是对于POST的两阶段提交引起的访问超时也发生过好几次,而且基本无解,只能修改实现方式,尽量减少传输的数据以便改用GET方式。 有不少浏览器厂商对于POST的提交采用两阶段发送数据,特别是IE系统列的XMLHttpRequest对象,所以在IE浏览器上用AJAX提交POST的数据,是按两个

诗剑书生的专栏 8129

保姆级教程:在Windows 10/11上安装配置KNIME 5.8.0(含中文文本库更新)

本文提供在Windows 10/11系统上安装配置KNIME 5.8.0的详细指南,包括中文文本库更新和性能优化方案。从环境准备、安装流程到中文文本处理能力强化,逐步指导用户搭建高效的数据分析环境,特别针对国内网络环境和中文用户需求提供实用解决方案。

weixin_29081101的博客 670

40岁从智驾转具身智能之路

我的工作经历比较复杂,本科毕业后工作2年再次读研的,本科和硕士都是机械专业,硕士毕业后干了5年CAM和机器人再转入到自动驾驶行业。在自动驾驶干了8年,发现自动驾驶已经到了一个瓶颈,再次转行做具身智能。我就谈谈自己的最近这次转型之路。

hzm8341的博客 638

发送请求时会自动创建一个options请求

同时,Cookie依然遵循同源政策,只有用服务器域名设置的Cookie才会上传,其他域名的Cookie并不会上传,且(跨源)原网页代码中的document.cookie也无法读取服务器域名下的Cookie。服务器收到预检请求后,检查了Origin、Access-Control-Request-Method和Access-Control-Request-Headers字段以后,确认允许跨源请求,就可以做出回应。它的值要么是请求时Origin字段的值,要么是一个*,表示接受任意域名的请求。

云游的猪 1383

第三章:ESP32零基础教学 - 3.4 蓝牙通信

本文详细介绍了如何在ESP32上实现经典蓝牙和BLE通信,并提供了代码解释和示例。通过这些示例,你可以轻松地将蓝牙功能集成到你的物联网项目中。无论是经典蓝牙的简单串口通信,还是BLE的灵活服务架构,ESP32都能满足你的需求。

Hi__gril的博客 4019

http里post的Query与Body的区别

Query与Body参数的区别

Jason_WangYing的博客 3735

自适应粒子群优化(Adaptive Particle Swarm Optimization,APSO

下面是一个关于自适应粒子群优化(Adaptive Particle Swarm Optimization,APSO)的博客,希望可以帮助您。提示:以下是本篇文章正文内容,下面案例可供参考在上面的代码中,表示粒子的数量,表示解空间的维度,表示迭代次数,表示优化的目标函数。在__init__方法中,我们初始化了粒子群的位置和速度,并将每个粒子的位置作为其最优解,将其适应度值初始化为正无穷。我们还初始化了学习因子和惯性权重的参数。在run方法中,我们迭代了次,计算每个粒子的适应度值和最优解。

weixin_52026057的博客 9916

C++-ONNX:用onnxruntime部署自己的模型【Pytorch导出.onnx】【Tensorflow导出.onnx】【C++用onnxruntime框架部署并推理】

微软联合Facebook等在2017年搞了个深度学习以及机器学习模型的格式标准–ONNX,旨在将所有模型格式统一为一致,更方便地实现模型部署。现在大多数的深度学习框架都支持ONNX模型转出并提供相应的导出接口。ONNXRuntime(Open Neural Network Exchange)是微软推出的一款针对ONNX模型格式的推理框架,用户可以非常便利的用其运行一个onnx模型。ONNXRuntime支持多种运行后端包括CPU,GPU,TensorRT,DML等。

u013250861的博客 5766

get请求与post请求的区别

一、定义 1、get 和 post请求是http协议中的两种请求方式。 2、get一般用来获取服务器的信息的,post一般是用来更新信息。 二、区别 1、get请求一般用来请求获取数据 post请求一般作为发送数据到后台,传递数据,创建数据 2、get请求也可以传参到后台,但是传递的参数则显示在地址栏,安全性低,且参数的长度也有限制(2048字符) post请求则是将传递的参数放在request body中,不会在地址栏显示,安全性比get请求高,参数没有长度限...

youtufeitu的博客 5万+

ThingsBoard教程(十六):RPC部件的使用

前言 各位读者好,截止目前,ThingsBoard系列文章已经做了十篇,分别是 ThingsBoard教程(一):ThingBoard介绍及安装 ThingsBoard教程(二):租户,租户配置,部件组模块的使用 ThingsBoard教程(三):系统设置模块的使用 ThingsBoard教程(四):规则链简介与操作 ThingsBoard教程(五):客户,资产管理 ThingsBoard教程(六):设备管理 ThingsBoard教程(七):模拟设备遥测 ThingsBoard教程(八):自定义UI T

知无涯 4580

HTTP GET 和 POST 请求的优缺点,区别以及误区

Get和Post在面试中一般的区别 post更安全,不会作为url的一部分,不会被缓存、保存在服务器日志、以及浏览器浏览记录中. post发送的数据更大(get有url长度限制) post能发送更多的数据类型(get只能发送ASCII字符) post比get慢 post用于修改和写入数据,get一般用于搜索排序和筛选之类的操作(淘宝,支付宝的搜索查询都是get提交),目的是资源的获取,读取数据 要...

代码笔记 2356

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

get,post数据长度的限制 2 GET与POST方法的区别

1 get,post数据长度的限制 2 GET与POST方法的区别 track http://www.cnblogs.com/xiaotaomaomao/articles/986070.htmlget,post数据长度的限制这个问题在我的开发中也遇到,所以在此贴出来(也是在网上搜出来的,呵呵)这是原贴地址http://blog.c

zlf0727的专栏 2588

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

get和post的区别

要弄清楚get和post 的区别,就要先知道get和post是什么东西? get和post是浏览器在请求服务器端地址时,在浏览器和服务器建立联系之后的请求方法,除了get,post还有其他的,HTTP/1.1 定义的请求方法有8种:GET(完整请求一个资源)、POST(提交表单)、PUT(上传文件)、DELETE(删除)、PATCH、HEAD(仅请求响应首部)、OPTIONS(返回请求的资源所支持的方法)、TRACE(追求一个资源请求中间所经过的代理)。最常的两种GET和POST,如果是RESTful接

fanfanfys的博客 209

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

javaServlet的get和post请求

1、 Servlet在javaWeb中的作用 Java sevlet是运行在 Web 服务器或应用服务器上的程序,它是作为来自Web浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。 可以收集来自网页表单的用户输入,呈现来自数据库或者其他源的记录,还可以动态创建网页。 若是还不明白,可以将Servlet代替成contoller Servlet规范介绍: - servlet规范来自于JAVAEE规范中的一种 * 作用: 1: 在Servlet规范中,指定【动态资

拔高、提升、创新! 2820

Java Sokect编程之HTTP请求

1、概述   HTTP是一种协议,全称超文本传输协议,而网页就属于超文本(就是为了它服务的),可以支持多媒体等,比如图片、音频,丰富了用户的体验;它属于网络模型中应用层的协议,底层基于TCP/IP协议,并额外制定了自己的规范,所以它也是Socket编程的一种,只是由于强大和便捷的客户端和服务端软件,常常让人看不到它的本质。   首先HTTP属于网络编程,而且是基于TCP/IP协

Noodles的博客 3983

HTTP 方法(GET和POST的区别)

首先咱们得弄清楚什么是 HTTP? 超文本传输协议(HTTP)的设计目的是保证客户机与服务器之间的通信。 HTTP 的工作方式是客户机与服务器之间的请求-应答协议。 web 浏览器可能是客户端,而计算机上的网络应用程序也可能作为服务器端。 举例:客户端(浏览器)向服务器提交 HTTP 请求;服务器向客户端返回响应。响应包含关于请求的状态信息以及可能被请求的内容。 GET 方法  根

龚韬的专栏 540

post和get的区别

get,post数据长度的限制 这个问题在我的开发中也遇到,所以在此贴出来(也是在网上搜出来的,呵呵)这是原贴地址http://blog.youkuaiyun.com/somat/archive/2004/10/29/158707.aspx两个长度限制问题的分析(来源于项目) 一、问题起因在某项目释放后Bug统计的附件《释放后问题》里有:   问题  原因  分析  备注  CSV处理时,如果处理的主

sphinger的专栏 1022

笔记-HTTP请求时哪些请求头是默认的

今天我们先研究请求头,我就想,如果我们能弄清楚,在我们什么都不做的情况下,一个最简单的HTTP请求会携带哪些请求头,那么复杂的情况无非是在这上面做加法,我们对请求头就能做到心中有数了。事实是只有浏览器通过XMLHttpRequest对象和Fetch对象发出的请求才叫AJAX,才存在跨域,服务端发出的HTTP请求是不存在跨域的。我们现在来看一下这8个请求头的功能吧,现在我们知道了,这8个是浏览器发出HTTP请求默认会携带的请求头。最后,我们看一下浏览器发出的AJAX以外的请求会携带哪些请求头?

零正催照 1028

HTTP 报文格式

HTTP报文格式

HeruiUp的专栏 1万+

http post请求相关问题

1、彻底弄清楚post和get请求的区别

shengruxiahua2571的博客 157

http传参get与post的误区与总结

转自:http://xinyangwjb.iteye.com/blog/1323336 众所周知的http请求有两种:  get与post:  这两种请求的区别就是传参的参数放的位置不同,一个在Request URL,一个在Request Form Data。  如果是post请求,浏览器会自动将?a=1&b=2转化为a:1 b:2  第一个误区:post提交是安全的,因为他不在ur

lanqibaoer的专栏 1640
上一篇: Java并发编程(四):CyclicBarrier原理详解
下一篇: StringUtils的常用方法
少侠露飞
博客等级 码龄9年 214粉丝 117原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值