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

linux网络 | http结尾、理解长连接短链接与cookie

        前言:本节是http章节的最后一部分,主要解释一些小概念。讲解到了HTTP的方法,表单, 重定向等等。 现在废话不多说, 开始我们的学习吧。

        ps:本节内容都是概念, 知道就行, 友友们放心观看哦。

目录

HTTP方法 

表单

重定向

Connection


HTTP方法 

        一般我们获取方法, 使用的都是GET方法。 还有一种方法叫做POST方法, 也是获取资源。 下面是可以使用的HTTP方法。

GET获取资源

1.0、1.1

POST获取实体主体1.0、1.1
PUT传输文件1.0、1.1
HEAD获得报文首部1.0、1.1
DELETE删除文件1.0、1.1
OPTIONS询问支持的方法1.1
TRACE追踪路径1.1
CONNECT要求用隧道协议连接代理1.1
LINK建立和资源之间的联系1.0
UNLINK断开链接关系1.0

        PUT时请求传输文件,假如我们第一行那里时PUT方法,那么就是要传输文件。 假如我的请求行是HEAD方法, 那么就是要获取各个报文的首部。 假如我的请求行时DELETE方法, 那么就是请求删除某一个文件等等。这里我们用到最多的其实是GET和POST。

表单

        我们日常使用某些网站(http/https), 是如何把我的数据交给服务器的? 日常的时候是怎么提交的呢?? ——这里其实是通过表单进行提交的。

        什么是表单, 表单就是我们在任意网站, 进行密码登陆的时候那个文本框:

这个东西, 就是表单。 他们是用来提交数据的。 

        POST方法也支持参数提交, 采用请求到正文提交参数。 GET方法通过url进行提参数。 参数数量是受限的。 GET方法的参数会回显, 不私秘。POST方法私密。但是GET和POST都是不安全的。想要安全,就要加密。

        HTTP的状态码,状态码其实就是响应行那的那个状态码。

  •         2开头一般就代表正常处理完毕。
  •         3开头一般就代表重定向状态码。
  •         4开头一般就代表客户端错误。
  •         5开头一般就代表服务端错误。

        最常见的状态码:200(OK), 404(NOT FOUND), 403(Forbidden), 302(Redirect重定向), 504(Bad Gateway)

重定向

        HTTP报头中有一个叫做location的字段。location是一个搭配3XX状态码使用, 告诫客户端记下来去哪里访问的字段。

        所以, 重定向, 就是让服务器知道浏览器, 让浏览器访问新的地址。

        重定向分为永久重定向和临时重定向。永久重定向就是以后都不来这里访问了,临时重定向就是只改变临时方向,下次访问是还是访问这个网站。

Connection

        

        HTTP还有一个重要的概念就是他的属性, 首先我们看一下Content-length属性, 这个属性我们都知道表示正文的长度。 HOST就是表示目标主机是谁。User-Agent就是表示用户的操作系统和浏览器的版本信息。referer就是记录下来, 当前页面之前的那个页面。就是比如我本来在a页面,然后点击进入b页面。那么b页面的referer就是a页面。 

        然后就是Location, 我们之前说过。

        还有一个字段就是Connection。我们接收到http请求,保温里面有一个叫做Connection:keep-live。

        这个如何理解?         
        我们知道, 一个页面是有非常多的元素的。 每一个元素, 就是一个资源。

        然后我们也知道, http协议是基于tcp的, 而tcp协议是基于字节流的。 而且, 浏览器和服务器建立起来接, 必须要经过tcp的connect。 那么, 如果有101个资源, 那么我们请求资源一共101次,每一次请求都要请求连接, 然后发送请求。 发送请求后又要断开连接。 那么一共101次, 就特别浪费时间。 这种一次请求一个资源,就关闭连接我们称为短链接。 

        后来, 我们的http的设计者就想到, tcp就是双向通信的一个信道,就是下面的图:

        这种一次连接, 多个请求, 就叫做长连接。 

        http1.0默认支持的就是短链接, http1.1默认支持的就是长连接。然后我们的请求方和响应双方进行交互的前几次, 其实也是在协商http的版本。 然后如何证明我们的协商后的版本,就是这个Connection。 如果Connection是keep-alive, 那么就是长连接。

        http协议是无状态的, 就比如我们今天访问一个网页, 我们反复刷新的时候, 浏览器就要一次一次的向服务器发起请求。 http已经不记录自己曾经访问这张图片, 这个网页。 所以请求一次,下一次请求还是要重新发送请求。 但是如果是这样的, 假设我们刷视频, 我们看一个视频是不是就是一次请求? 而如果每次刷新视频都重新请求, 也就是意味着要重新登陆, 那么是不是就算太麻烦了, 所以这里就用到了cookie。 

        下面就是一个cookie建立的过程。 一开始我们现在浏览器填写账号密码。 然后浏览器将数据打包发送给b站。 b站就收账号密码后进行身份验证, 验证成功后响应请求。 将账号密码作为cookie打包响应回去。 然后浏览器就收到了cookie, 以后再登录就是使用cookie里面的数据了。

相关文章:

linux网络 | http结尾、理解长连接短链接与cookie

前言:本节是http章节的最后一部分,主要解释一些小概念。讲解到了HTTP的方法,表单, 重定向等等。 现在废话不多说, 开始我们的学习吧。 ps:本节内容都是概念, 知道就行, 友友们放心观…...

金融项目实战 02|接口测试分析、设计以及实现

目录 ⼀、接口相关理论 二、接口测试 1、待测接口:投资业务 2、接口测试流程 3、设计用例理论 1️⃣设计方法 2️⃣工具 4、测试点提取 5、测试用例 ⼀、接口相关理论 1、ui功能测试和接⼝测试那个先执⾏?为什么? 结论&#xff1a…...

二、智能体强化学习——深度强化学习核心算法

2.1 DQN 系列及其改进 2.1.1 背景与动机 在经典强化学习中(如 Q-Learning),如果状态空间或动作空间非常大乃至连续,那么用一个表格来存储 Q ( s , a ) Q(s,a) Q(s,a) 不再可行。为了解决该问题,可以使用神经网络来逼…...

Mysql--架构篇--存储引擎InnoDB(内存结构,磁盘结构,存储结构,日志管理,锁机制,事务并发控制等)

MySQL是一个多存储引擎的数据库管理系统,支持多种不同的存储引擎。每种存储引擎都有其独特的特性、优势和适用场景。选择合适的存储引擎对于优化数据库性能、确保数据完整性和满足业务需求至关重要。 注:在同一个Mysql的数据库中,对于不同的表…...

JVM实战—13.OOM的生产案例

大纲 1.每秒仅上百请求的系统为何会OOM(RPC超时时间设置过长导致QPS翻几倍) 2.Jetty服务器的NIO机制如何导致堆外内存溢出(S区太小 禁NIO的显式GC) 3.一次微服务架构下的RPC调用引发的OOM故障排查实践(MAT案例) 4.一次没有WHERE条件的SQL语句引发的OOM问题排查实践(使用MA…...

client-go 的 QPS 和 Burst 限速

1. 什么是 QPS 和 Burst ? 在 kubernetes client-go 中,QPS 和 Burst 是用于控制客户端与 Kubernetes API 交互速率的两个关键参数: QPS (Queries Per Second) 定义:表示每秒允许发送的请求数量,即限速器的平滑速率…...

使用docker-compose安装Redis的主从+哨兵模式

必看 本文是一主二从一哨兵模式;其余的单机/集群/多哨兵模式的话,不在本文... 本文的环境主要是:应用app在本地,redis在云服务器上; 图解 图如下:这个图很重要; 之所以要这样画图&#xff0…...

数据结构(Java版)第七期:LinkedList与链表(二)

专栏:数据结构(Java版) 个人主页:手握风云 一、链表的实现(补) 接上一期,下面我们要实现删除所有值为key的元素,这时候有的老铁就会想用我们上一期中讲到的remove方法,循环使用remove方法&#…...

ant-design-vue 1.X 通过id获取a-input组件失败

1.ant-design-vue 1.X 问题描述 当我在a-form组件中&#xff0c;以v-decorator指令绑定表单组件时&#xff0c;无法根据我设置的verify-code-input获取元素 <a-input type"text" id"verify-code-input" class"paIpt":placeholder"$t(…...

Flutter:吸顶效果

在分页中&#xff0c;实现tab吸顶。 TDNavBar的screenAdaptation: true, 开启屏幕适配。 该属性已自动对不同手机状态栏高度进行适配。我们只需关注如何实现吸顶。 view import package:ducafe_ui_core/ducafe_ui_core.dart; import package:flutter/material.dart; import p…...

MATLAB语言的数据类型

MATLAB语言的数据类型详解 MATLAB&#xff08;矩阵实验室&#xff09;是一种广泛应用于科学计算、数据分析、算法开发及模型构建的高性能语言和环境。MATLAB的强大之处不仅在于其丰富的数学工具和可视化功能&#xff0c;还有其灵活多变的数据类型。这篇文章将详细介绍MATLAB中…...

priority_queue优先队列

目录 1. 最短路径算法&#xff08;Dijkstra算法&#xff09; 应用场景&#xff1a; 优先队列的作用&#xff1a; 2. 最小生成树算法&#xff08;Prim算法&#xff09; 应用场景&#xff1a; 优先队列的作用&#xff1a; 3. 哈夫曼编码&#xff08;Huffman Coding&#x…...

HarmonyOS 鸿蒙Next 预览pdf文件

HarmonyOS 鸿蒙Next 预览pdf文件 1、使用filePreview 2、使用web组件 在线pdf&#xff08;网址是直接下载的&#xff0c;不是直接可以预览的&#xff09;&#xff0c;先下载再预览 import media from ohos.multimedia.media;import web_webview from ohos.web.webview;import …...

vscode开启调试模式,结合Delve调试器调试golang项目详细步骤

1.前期准备 (1).在vs code中的扩展程序中搜索并安装Go扩展程序 (2).安装 Delve 调试器 go install github.com/go-delve/delve/cmd/dlvlatest (3).打开vs code的命令面板&#xff0c;输入Go: Install/Update Tools&#xff0c;并单击该命令执行&#xff0c;安装或更新Go语…...

身份鉴权(PHP)(小迪网络安全笔记~

免责声明&#xff1a;本文章仅用于交流学习&#xff0c;因文章内容而产生的任何违法&未授权行为&#xff0c;与文章作者无关&#xff01;&#xff01;&#xff01; 附&#xff1a;完整笔记目录~ ps&#xff1a;本人小白&#xff0c;笔记均在个人理解基础上整理&#xff0c;…...

【git】-初始git

一、什么是版本控制&#xff1f; 二、Git的安装 三、掌握Linux常用命令 四、Git基本操作 1、提交代码 2、查看历史提交 3、版本回退 一、什么是版本控制&#xff1f; 版本控制是一种用于记录文件或项目内容变化的系统。它通过版本标识和版本历史记录来管理不同版本&#…...

CSS 盒模型

盒模型 CSS盒模型是网页布局的核心概念之一&#xff0c;它描述了网页元素的物理结构和元素内容与周围元素之间的关系。根据W3C规范&#xff0c;每个HTML元素都被视为一个矩形盒子&#xff0c;这个盒子由以下四个部分组成&#xff1a; 内容区&#xff08;Content area&#xff…...

[0405].第05节:搭建Redis主从架构

Redis学习大纲 一、3主3从的集群配置&#xff1a; 1.1.集群规划 1.分片集群需要的节点数量较多&#xff0c;这里我们搭建一个最小的分片集群&#xff0c;包含3个master节点&#xff0c;每个master包含一个slave节点&#xff0c;结构如下&#xff1a; 2.每组是一主一从&#x…...

6 分布式限流框架

限流的作用 在API对外互联网开放的情况下&#xff0c;是无法控制调用方的行为的。当遇到请求激增或者黑客攻击的情况下&#xff0c;会导致接口占用大量的服务器资源&#xff0c;使得接口响应效率的降低或者超时&#xff0c;更或者导致服务器宕机。 限流是指对应用服务进行限制…...

sosadmin相关命令

sosadmin命令 以下是本人翻译的官方文档&#xff0c;如有不对&#xff0c;还请指出&#xff0c;引用请标明出处。 原本有个对应表可以跳转的&#xff0c;但是CSDN的这个[](#)跳转好像不太一样&#xff0c;必须得用html标签&#xff0c;就懒得改了。 sosadmin help 用法 sosadm…...

Pexpect与subprocess对比:何时选择哪个Python进程控制工具

Pexpect与subprocess对比&#xff1a;何时选择哪个Python进程控制工具 【免费下载链接】pexpect A Python module for controlling interactive programs in a pseudo-terminal 项目地址: https://gitcode.com/gh_mirrors/pe/pexpect 在Python自动化脚本开发中&#xff…...

告别setData地狱!用miniprogram-computed给你的微信小程序组件加上计算属性

告别setData地狱&#xff01;用miniprogram-computed给你的微信小程序组件加上计算属性 每次在小程序里处理复杂数据联动时&#xff0c;你是不是也经历过这样的痛苦&#xff1f;表单验证状态需要根据三个输入框内容实时更新&#xff0c;购物车总价要随着商品数量和优惠券动态计…...

OpenClaw+百川2-13B-4bits:10分钟搭建学术资料收集机器人

OpenClaw百川2-13B-4bits&#xff1a;10分钟搭建学术资料收集机器人 1. 为什么需要学术资料收集机器人&#xff1f; 上周整理毕业论文参考文献时&#xff0c;我发现自己浪费了整整3个小时在重复操作上&#xff1a;在Google Scholar搜索关键词→逐一点开论文链接→手动判断相关…...

探索拖火车混合A星路径规划算法

拖火车混合a星路径规划算法 在路径规划领域&#xff0c;各种算法层出不穷&#xff0c;今天咱就唠唠拖火车混合A星路径规划算法。这算法融合了传统A星算法的优势&#xff0c;并针对特定场景进行了创新&#xff0c;就像是给A星算法穿上了特制的“战衣”&#xff0c;以应对更复杂…...

【设计模式】探索状态模式在现代软件开发中的应

在技术领域&#xff0c;我们常常被那些闪耀的、可见的成果所吸引。今天&#xff0c;这个焦点无疑是大语言模型技术。它们的流畅对话、惊人的创造力&#xff0c;让我们得以一窥未来的轮廓。然而&#xff0c;作为在企业一线构建、部署和维护复杂系统的实践者&#xff0c;我们深知…...

嵌入式Linux驱动开发全攻略

1. 嵌入式Linux驱动开发全景解析 从事嵌入式开发多年&#xff0c;我深刻体会到驱动开发是整个嵌入式系统中最为关键也最具挑战性的部分。它像一座桥梁&#xff0c;连接着冰冷的硬件和灵活多变的软件世界。今天&#xff0c;我将从实际工程角度&#xff0c;系统梳理嵌入式Linux驱…...

单片机驱动MOS管的原理与实战技巧

1. 单片机直接驱动MOS管的原理与风险MOS管作为现代电子设计中最常用的功率开关器件&#xff0c;其控制方式看似简单却暗藏玄机。作为一名经历过多次"炸管"教训的硬件工程师&#xff0c;我想分享一些关于单片机直接驱动MOS管的实战经验。MOS管分为NMOS和PMOS两种类型&…...

如何利用爬虫技术快速精准地抓取目标数据?

1. 爬虫策略&#xff1a;从"无脑抓"到"精准狙击" 我刚入行时犯过一个典型错误——用单线程脚本无差别抓取整站数据&#xff0c;结果不仅触发反爬机制被封IP&#xff0c;还浪费三天时间清洗90%的无用数据。现在回头看&#xff0c;合理的爬虫策略就像狙击手…...

北京交通大学 | 基于TD3算法的层叠超表面辅助多用户MISO系统联合优化研究

引言随着无线通信技术的不断发展&#xff0c;可重构智能表面&#xff08;RIS&#xff09;技术因其低功耗和信号操控能力而受到广泛关注。然而&#xff0c;RIS的单层结构和离散相移能力限制了其性能表现。层叠智能超表面&#xff08;SIM&#xff09;作为一项创新技术&#xff0c…...

无缝跨平台体验:APK-Installer让Windows运行Android应用的革命性工具

无缝跨平台体验&#xff1a;APK-Installer让Windows运行Android应用的革命性工具 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 在数字化时代&#xff0c;用户常常面临…...