当前位置: 首页 > news >正文

【HTTP】URL结构、HTTP请求和响应的报文格式、HTTP请求的方法、常见的状态码、GET和POST有什么区别、Cookie、Session等重点知识汇总

目录

URL格式

HTTP请求和响应报文的字段?

HTTP请求方法

常见的状态码

GET 和 POST 的区别

Cookie 和 Session


URL格式

:是用来分割URL的主体部分(通常是路径)和查询字符串(query string)查询字符串是一组键值对的参数

query string:是键值对的结构,&分割键值对,=分割键和值

HTTP请求和响应报文的字段?

Content-Type: 数据类型(text/html等)。

Content-Length: 正文的长度。

Host: 客户端告知服务器,所请求的资源是在哪个主机的哪个端口上。

User-Agent: 声明用户的操作系统和浏览器的版本信息。

Referer: 当前页面是哪个页面跳转过来的。

Location: 搭配3XX状态码使用,告诉客户端接下来要去哪里访问。

Cookie: 用于在客户端存储少量信息,通常用于实现会话(session)的功能。

Connection 字段 ---> 长连接

HTTP/1.1 版本的默认连接都是长连接,但为了兼容老版本的 HTTP,需要指定 Connection 首部字段的值为 Keep-Alive。

开启了 HTTP Keep-Alive 机制后, 连接就不会中断,而是保持连接。当客户端发送另一个请求时,它会使用同一个连接,一直持续到客户端或服务器端提出断开连接。

Content-Encoding 字段

Content-Encoding 字段说明数据的压缩方法。表示服务器返回的数据使用了什么压缩格式

Content-Encoding: gzip

HTTP请求方法

GET:用于从服务器获取资源,通常是通过URL传递参数来请求资源。GET请求是幂等的,即多次请求相同资源不会产生不同的结果。

POST:用于向服务器提交数据,通常用于创建新资源或在服务器上执行某些操作。POST请求不幂等,多次提交相同的数据可能会产生不同的结果。

HEAD:类似于GET请求,但只返回资源的头部信息,不返回实际的数据。通常用于检查资源是否存在或获取资源的元数据。

PUT:用于更新或创建指定的资源,通常将请求的数据放在请求体中,以覆盖服务器上的现有资源或创建新资源。

DELETE:用于删除指定的资源。DELETE请求用于删除服务器上的资源。

OPTIONS:用于获取目标资源支持的通信选项。客户端可以使用OPTIONS请求来查询服务器支持的请求方法、头部信息等。

PATCH:用于部分更新资源,通常将请求的数据放在请求体中,只更新资源的一部分而不是整个资源。

TRACE:用于追踪请求在传输过程中的轨迹,通常用于诊断和调试。

CONNECT:通常用于建立与代理服务器的网络连接,以便进行加密通信(如HTTPS)或隧道传输。

常见的状态码

1xx 类状态码属于提示信息,是协议处理中的一种中间状态,实际用到的比较少。

2xx 类状态码表示服务器成功处理了客户端的请求,也是我们最愿意看到的状态。

  • 200 OK」是最常见的成功状态码,表示一切正常。如果是非 HEAD 请求,服务器返回的响应头都会有 body 数据。
  • 204 No Content」也是常见的成功状态码,与 200 OK 基本相同,但响应头没有 body 数据。
  • 206 Partial Content」是应用于 HTTP 分块下载或断点续传,表示响应返回的 body 数据并不是资源的全部,而是其中的一部分,也是服务器处理成功的状态。

3xx 类状态码表示客户端请求的资源发生了变动,需要客户端用新的 URL 重新发送请求获取资源,也就是重定向

  • 301 Moved Permanently」表示永久重定向,说明请求的资源已经不存在了,需改用新的 URL 再次访问。
  • 302 Found」表示临时重定向,说明请求的资源还在,但暂时需要用另一个 URL 来访问。

301 和 302 都会在响应头里使用字段 Location,指明后续要跳转的 URL,浏览器会自动重定向新的 URL。

  • 304 Not Modified」不具有跳转的含义,表示资源未修改,重定向已存在的缓冲文件,也称缓存重定向,也就是告诉客户端可以继续使用缓存资源,用于缓存控制。

4xx 类状态码表示客户端发送的报文有误,服务器无法处理,也就是错误码的含义。

  • 400 Bad Request」表示客户端请求的报文有错误,但只是个笼统的错误。
  • 401 Unauthorized」:表示需要身份验证,客户端未提供有效的凭据。
  • 403 Forbidden」表示服务器禁止访问资源,并不是客户端的请求出错。
  • 404 Not Found」表示请求的资源在服务器上不存在或未找到,所以无法提供给客户端。

5xx 类状态码表示客户端请求报文正确,但是服务器处理时内部发生了错误,属于服务器端的错误码。

  • 500 Internal Server Error」与 400 类型,是个笼统通用的错误码,服务器发生了什么错误,我们并不知道。
  • 501 Not Implemented」表示客户端请求的功能还不支持,类似“即将开业,敬请期待”的意思。
  • 502 Bad Gateway」通常是服务器作为网关或代理时返回的错误码,表示服务器自身工作正常,访问后端服务器发生了错误。
  • 503 Service Unavailable」表示服务器当前很忙,暂时无法响应客户端,类似“网络服务正忙,请稍后重试”的意思。

GET 和 POST 的区别

RFC代表"Request for Comments",它是一种用于制定和描述互联网标准、协议和相关信息的文档系列。RFC文档是由互联网工程任务组和其他互联网相关组织发布的,用于记录互联网的技术规范和协议。

根据 RFC 规范,GET 的语义是从服务器获取指定的资源。GET 请求的参数位置一般是写在 URL 中,URL 规定只能支持 ASCII,以?分割URL和传输数据,参数之间以&相连

根据 RFC 规范,POST 的语义是根据请求负荷(报文body)对指定的资源做出处理(POST方法一般用于将数据上传给服务器)。POST 请求携带数据的位置一般是写在报文 body 中

先说明下安全和幂等的概念:

  • 在 HTTP 协议里,所谓的「安全」是指请求方法不会「破坏」服务器上的资源。
  • 所谓的「幂等」,意思是多次执行相同的操作,结果都是「相同」的。

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

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

上面是从 RFC 规范定义的语义来分析的。

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

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

如果「安全」放入概念是指信息是否会被泄漏的话,虽然 POST 用 body 传输数据,而 GET 用 URL 传输,这样数据会在浏览器地址拦容易看到,但是并不能说 GET 不如 POST 安全的

虽然在浏览器地址拦看不到 POST 提交的 body 数据,但是只要抓个包就都能看到了。

GET和POST没有本质区别,使用GET实现的场景基本上也可以使用POST,使用POST实现的场景基本上也可以使用GET

Cookie 和 Session

Cookie和Session是用于在Web应用中维护用户状态和跟踪用户会话的两种常见方式

Cookie

  • cookie是请求头中的一个重要字段,在服务器返回的响应报文中,可以在响应header中包含一个或多个Set-Cookie这样的资源,浏览器看到这些Set-Cookie就会把这样的数据保存在浏览器本地。
  • Cookie典型的应用场景,在客户端维持登陆状态。在某个网站上登陆成功之后,浏览器就会记住当前登录用户的身份信息,然后在接下来的访问网站的其他页面,服务器也能知道是谁在登录。
  • Cookie是存储在客户端(通常是浏览器)中的小型文本文件(一般<=4KB)。服务器将Cookie发送给客户端并存储在客户端的本地文件中,以便在后续HTTP请求中将Cookie发送回服务器。
  • Cookie通常用于存储少量简单的文本数据,例如用户偏好设置或用于跟踪用户的身份验证令牌。

Cookie不是缓存,是持久化存储数据的手段,浏览器自动帮你存储,这个存储是保存到硬盘上的;而缓存的数据不一定是持久化的(也可以在内存里缓存);缓存的数据是用来提高访问速度的!

  • Cookie数据存储在客户端的浏览器中,因此可能容易受到客户端篡改或窃取的风险。
  • 由于每个HTTP请求都会包含任何相关Cookie数据,因此可能会增加网络流量和加载时间

Session

  • 服务器同一时刻收到的请求有很多,服务器需要清楚的区分每个请求属于哪个客户端,就需要先在服务器这里记录每个用户的身份标识和所对应的用户信息。就有了session!sessionId是由服务器生成的一个唯一性字符串;
  • Session数据通常存储在服务器上。服务器为每个客户端会话创建一个唯一的标识符(通常是会话ID,sessionID),并使用该标识符来跟踪和管理与特定用户相关的数据。

会话的本质就是一个哈希表,存储着一些键值对。其中key就是身份标识(sessionId),value就是用户信息(session)。

  • Session用于存储更敏感和持久的数据,例如用户身份验证信息。Session通常用于存储更大、更复杂的数据,如用户登录状态、购物车内容等。
  • Session数据存储在服务器上,客户端无法直接访问或修改Session数据,因此通常比Cookie更安全。但服务器端的安全性也非常重要,以防止会话劫持等攻击。
  • Session数据存储在服务器上,不会在每个请求中传输,因此不会对网络性能产生太大影响。

相关文章:

【HTTP】URL结构、HTTP请求和响应的报文格式、HTTP请求的方法、常见的状态码、GET和POST有什么区别、Cookie、Session等重点知识汇总

目录 URL格式 HTTP请求和响应报文的字段&#xff1f; HTTP请求方法 常见的状态码 GET 和 POST 的区别 Cookie 和 Session URL格式 &#xff1f;&#xff1a;是用来分割URL的主体部分&#xff08;通常是路径&#xff09;和查询字符串&#xff08;query string&#xff09;…...

苹果mac电脑显示内存不足如何解决?

忍痛删应用、删文档、删照片视频等等一系列操作都是众多Mac用户清理内存空间的方法之一&#xff0c;悲催的是一顿“猛如虎的操作”下&#xff0c;释放出来的内存空间却少的可怜&#xff0c;原因很简单&#xff0c;这样释放内存空间是无效的。如何合理有效的清理内存空间&#x…...

如何在Windows 10上安装Go并搭建本地编程环境

引言 Go是在谷歌的挫折中诞生的编程语言。开发人员不得不不断地选择一种执行效率高但需要长时间编译的语言&#xff0c;或者选择一种易于编程但在生产环境中运行效率低的语言。Go被设计为同时提供这三种功能:快速编译、易于编程和在生产中高效执行。 虽然Go是一种通用的编程语…...

[Realtek sdk-3.4.14b]RTL8197FH-VG 2.4G to WAN吞吐量低于60%的问题分析及解决方案

问题描述 RTL8197FH-VG 2.4G wifi to WAN吞吐量低于65%的标准,正常2T2R的wifi 300Mbps x 65% = 195Mbps,但是实际只能跑到160Mbps,这个时候CPU的idl已经为0,sirq占用率达到98%左右 网络拓扑 一台PC通过2.4G WiFi连接到RTL8197FH-VG,另外一台PC直接通过WAN口连接到RTL8197…...

软件设计模式系列之十八——迭代器模式

1 模式的定义 迭代器模式是一种行为型设计模式&#xff0c;它允许客户端逐个访问一个聚合对象中的元素&#xff0c;而不暴露该对象的内部表示。迭代器模式提供了一种统一的方式来遍历不同类型的集合&#xff0c;使客户端代码更加简洁和可复用。 2 举例说明 为了更好地理解迭…...

前端项目配置 prettier、eslint、lint-stages、husky、commitlint 、style-lint设置代码书写和提交规范

prettier中文网&#xff1a;Options Prettier 中文网 eslint中文网 &#xff1a;ESLint 中文网 github husky &#xff1a; https://github.com/typicode/husky commitlint.js 官网&#xff1a;commitlint - Lint commit messages 、github&#xff1a;GitHub - conventiona…...

如何开始着手一篇Meta分析 | Meta分析的流程及方法

Meta分析是针对某一科研问题&#xff0c;根据明确的搜索策略、选择筛选文献标准、采用严格的评价方法&#xff0c;对来源不同的研究成果进行收集、合并及定量统计分析的方法&#xff0c;最早出现于“循证医学”&#xff0c;现已广泛应用于农林生态&#xff0c;资源环境等方面。…...

【PID控制技术】

PID控制技术 简介控制原理相关术语调参技巧相互作用 相似算法与PWM对比 应用范围优缺点硬件支持 简介 PID控制是一种在工业过程控制中广泛应用的控制策略&#xff0c;其全称是比例-积分-微分&#xff08;Proportional Integral Derivative&#xff09;控制。它的基本原理是根据…...

docker openjdk:8-jdk-alpine 修改时区、添加字体

新建Dockerfile文件&#xff0c;制作新镜像 FROM openjdk:8-jdk-alpine 1、解决字体问题 RUN apk add --update ttf-dejavu fontconfig && rm -rf /var/cache/apk/* 2、解决时差问题 # 解决时差8小时问题ENV TZAsia/ShanghaiRUN ln -snf /usr/share/zoneinfo/$TZ /et…...

9+单细胞+实验验证,探讨单基因对癌细胞转移作用的思路方向

今天给同学们分享一篇单细胞实验的生信文章“Identification of RAC1 in promoting brain metastasis of lung adenocarcinoma using single-cell transcriptome sequencing”&#xff0c;这篇文章于2023年5月18日发表在Cell Death Dis期刊上&#xff0c;影响因子为9。 本研究旨…...

《计算机视觉中的多视图几何》笔记(7)

7 Computation of the Camera Matrix P P P 这章讲的是摄像机参数估计。摄像机标定&#xff0c;本质上就是求摄像机矩阵 P P P&#xff0c;当我们知道足够多的 X ↔ x X \leftrightarrow x X↔x&#xff0c;我们该如何计算 P P P&#xff1f;如果知道3D和2D点的对应&#xff…...

Python经典练习题(四)

文章目录 &#x1f340;第一题&#x1f340;第二题&#x1f340;第三题 &#x1f340;第一题 题目&#xff1a;打印出如下图案&#xff08;菱形&#xff09;: 我们首先分析一下&#xff0c;本题实现的步骤主要有两个&#xff0c;分别是前四行和后三行 前四行&#xff1a;第一…...

Mac Pro在重装系统时提示“未能与恢复服务器取得联系”

检查网络连接&#xff1a; 确保你的Mac Pro连接到稳定的网络。尝试更换其他网络&#xff0c;例如切换到不同的Wi-Fi或使用有线连接。 系统时间校正&#xff1a; 错误的系统时间有时会导致与恢复服务器的连接问题。在恢复模式下打开终端&#xff08;在实用工具菜单中选择终端&a…...

【C/C++】指针常量、常量指针、指向常量的常指针

目录 1.概念2. const pointer3. pointer to a constant3.1 (pointer to a constant)-constant3.2 poiner-constant3.3 (pointer to a constant)-variable3.4 poiner-variable3.5 多层级关系时的兼容3.6 用处 4. a constant pointer to a constant 1.概念 首先明确这几个术语的…...

【VUE复习·4】计算属性computed:原理、完整写法(不常用)、与 methods 的区别、简写(最常用)、应用案例!

总览 1.简介计算属性 2.computed 与 methods 的区别 3.computed 的简写&#xff08;不修改计算属性&#xff0c;只显示&#xff09; 4.经典应用场景 一、计算属性 1.为什么需要计算属性&#xff1f; 首先&#xff0c;如果我们要写一个插值语法&#xff0c;而 {{ }} 内的内容…...

Linux 基本语句_编译C过程

Linux撰写C语言并编译的过程 1、预处理 将所有的#define删除&#xff0c;并且展开所有的宏定义&#xff0c;并且处理所有的条件预编译指令&#xff0c;比如#if #ifdef #elif #else #endif等。处理#include预编译指令&#xff0c;将被包含的文件插入到该预编译指令的位置。删除…...

MYSQL8解压版 windows 主从部署步骤及配置(包含配置文件,教程文件,免积分下载)

MYSQL8解压版 windows 主从部署步骤及配置 一.安装MSYQL 这里只讲大概,详细步骤、my.ini文件、安装包等会在页尾文件中(正常情况按首个mysql安装,只是名字有区别) 1.主库my.ini配置 [mysqld] #典型的值是5-6GB(8GB内存)&#xff0c;8-11GB(16GB内存), 20-25GB(32GB内存)&…...

RabbitMQ的基本介绍

什么是MQ 本质是一个队列&#xff0c;只不过队列中存放的信息是message罢了&#xff0c;还是一种跨进程的通信机制&#xff0c;用于上下游传递信息。在互联网架构中&#xff0c;MQ是一种非常常见的上下游“逻辑解耦物理解耦”的消息通信服务。使用了MQ之后&#xff0c;信息发送…...

AI智能视频监控技术如何助力美好乡村建设?

随着城市化发展&#xff0c;很多乡村设施也在逐渐完善&#xff0c;智能监控也成了乡村发展必不可少的一环&#xff0c;智能视频监控应该在乡村建设里如何发挥作用呢&#xff1f; 1、有效提升安全意识 通过在乡村重要区域、公共场所、道路等设置智能视频监控设备&#xff0c;可…...

【网络安全】2023年堡垒机品牌大全

随着大家网络安全意识的增加&#xff0c;随着国家等保政策的严格执行&#xff0c;越来越多的企业开始采购堡垒机。这里就给大家总结了部分堡垒机品牌&#xff0c;让大家参考参考。 2023年堡垒机品牌大全 1、行云堡垒 2、JumpServer 3、安恒 4、骞云 5、齐治 6、阿里云 …...

makefile相关知识的讲解

目录 makefile文件的介绍 step1&#xff1a;手动创建一个makefile文件 step2&#xff1a;在文件当中编辑指定的命令 step3&#xff1a;退出makefile文件并使用make执行文件当中的命令 step4&#xff1a;使用clean指令清除生成的文件 makefile当中的命令编写方式 目标文件和依…...

OpenCV中的HoughLines函数和HoughLinesP函数到底有什么区别?

一、简述 基于OpenCV进行直线检测可以使用HoughLines和HoughLinesP函数完成的。这两个函数之间的唯一区别在于,第一个函数使用标准霍夫变换,第二个函数使用概率霍夫变换(因此名称为 P)。概率版本之所以如此,是因为它仅分析点的子集并估计这些点都属于同一条线的概率。此实…...

Xilinx FPGA 程序固化重新上电程序不运行的问题

问题描述 FPGA直接下载bit文件,功能正常。 FPGA擦除FLASH,烧写FLASH,正常。 电源断电,重新上电,FALSH里面的程序没有启动,FPGA程序没有跑起来。–FLASH启动不正常。 解决办法 在XDC约束文件里边增加约束: ## Configuration options, can be used for all designs se…...

c++ 使用rapidjson对数据序列化和反序列化(vs2109)

RapidJSON是腾讯开源的一个高效的C JSON解析器及生成器&#xff0c;它是只有头文件的C库&#xff0c;综合性能是最好的。 1. 安装 在NuGet中为项目安装tencent.rapidjson 2. 引用头文件 #include <rapidjson/document.h> #include <rapidjson/memorystream.h> #…...

4.迭代最近点ICP及非线性优化求解

使用非线性优化方法求解ICP 文章目录 使用非线性优化方法求解ICP前情提要ICP问题回顾对矩阵变量求导数 ICP问题的非线性解法代码示例 欢迎访问个人网络日志&#x1f339;&#x1f339;知行空间&#x1f339;&#x1f339; 前情提要 在迭代最近点算法ICP及SVD求解中介绍了ICP问…...

【redis总结】

文章目录 1、redis简介2、为什么要选择redis做缓存3、数据结构4、redis多线程模型redis6.0的变化 5、redis持久化AOF的实现过程RDB的实现过程 6、redis集群的搭建7、 redis过期删除和淘汰策略8、redis的内存淘汰策略 1、redis简介 Redis&#xff08;Remote Dictionary Server&…...

图数据库:释放关系的力量

【squids.cn】 全网zui低价RDS&#xff0c;免费的迁移工具DBMotion、数据库备份工具DBTwin、SQL开发工具等 在数据管理领域&#xff0c;图数据库已经成为一种强大的工具&#xff0c;它彻底改变了我们处理和分析复杂关系的方式。与依赖表和列的传统关系数据库不同&#xff0c;图…...

Windows系统如何临时关闭“Windows安全中心实时保护”

前言 启动windows depender实时保护可能会使系统不太流畅&#xff0c;也可能会导致我们的程序无法正常运行&#xff0c;因为它会拦截或搜索我们的正常工作。 暂时关闭windows depender的实时保护对许多用户来说非常重要。 一、Win10系统关闭方法 打开Windows安全中心&#…...

二叉树MFC实现

设有一颗二叉树如下&#xff1b; 这似乎是一颗经常用作示例的二叉树&#xff1b; 对树进行遍历的结果是&#xff0c; 先序为&#xff1a;3、2、2、3、8、6、5、4&#xff0c; 中序为&#xff1a;2、2、3、3、4、5、6、8&#xff0c; 后序为2、3、2、4、5、6、8、3&#xff1b…...

Nginx之客户并发数限制解读

目录 基本介绍 配置指令 limit_conn_zone limit_conn 其他 limit_rate limit_rate_after limit_req_zone limit_req 基本介绍 在我们进行系统开发设计中&#xff0c;要考虑服务器流量异常&#xff0c;负载过大等问题。对于大流量恶意的攻击访问&#xff0c;会带来带宽…...

重庆网站空间键词排名/seo求职

我们在之前的文章中给大家介绍了JavaScript中alert()的使用详解&#xff0c;我们都知道JavaScript中alert()弹出消息对话框&#xff0c;并且alert消息对话框通常用于一些对用户的提示信息&#xff0c;他的样式一直是默认的&#xff0c;那么我能不能修改他的样式呢&#xff0c;今…...

网络科技有限公司官网/2021百度seo

主板BIOS导致安装系统失败安全教程来源&#xff1a;华强电子网作者&#xff1a;华仔浏览&#xff1a;465时间&#xff1a;2017-08-05 10:14标签&#xff1a;摘要&#xff1a;内容&#xff1a; 一天&#xff0c;朋友打电话来说他的爱机装不上Windows 2000了&#xff0c;不是死机…...

专业微网站建设/整合营销传播方案案例

本文旨在用最通俗的语言讲述最枯燥的基本知识。 1.元字符 万物皆有源&#xff0c;正则也是如此&#xff0c;元字符是构造正则表达式的一种基本元素。 我们先来记几个常用的元字符&#xff1a; 元字符说明.匹配除换行符以外的任意字符\w匹配字母或数字或下划线或汉字\s匹配任…...

css 网站模板/seo排名的公司

为什么要对css属性进行浏览器兼容性总结呢&#xff1f;用的时候&#xff0c;直接去 Can I Use 里面检索浏览器对该属性的兼容性情况不就好了吗&#xff1f;css3.jpeg其实&#xff0c;在实际的开发过程中&#xff0c;我们对常见的css属性兼容情况了然于胸&#xff0c;才能极大的…...

如何建设网站主页和其他相关页面/seo关键词排名优化要多少钱

《HTML5介绍ppt课件.ppt》由会员分享&#xff0c;可在线阅读&#xff0c;更多相关《HTML5介绍ppt课件.ppt(20页珍藏版)》请在人人文库网上搜索。1、Welcome to HTML 5,什么是HTML5,HTML5的特点,HTML5的新特性,简介趋势,优势 var cxtc.getContext(2d); var grdcxt.createLinearG…...

本地计算机做网站服务器/郑州seo多少钱

这是参考大佬分享的代码写的有问题请提出指正&#xff0c;谢谢。using Serilog; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks;namespace TaskManager {class TaskFactoryMa…...