Linux之HTTP协议

news2024/11/15 21:05:13

目录

一、HTTP协议

1.1 HTTP概念

1.2 HTTP协议的格式

1.3 URL

1.4 HTTP的请求方法

1.5 HTTP的状态码

1.6 HTTP报头

1.7 长链接与短链接

1.8 Cookie与Session

1.8.1 Cookie的概念

1.8.2 Cookie的应用场景

1.8.3 Session的概念


一、HTTP协议

1.1 HTTP概念

        HTTP(Hypertext Transfer Protocol)是一种用于在网络上传输超文本的协议。它是客户端和服务器之间进行通信的基础协议,它是超文本传输协议的缩写,更准确地说是用于从万维网服务器传输超文本到本地浏览器的传送协议。

1.2 HTTP协议的格式

        其中请求行(状态行)和请求报头(响应报头)被统称为http报头,而请求正文(响应正文)被称为有效载荷。

        接下来我们来逐一认识请求行中的元素。

1.3 URL

        URL其实就是我们平时所称的“网址”:

  urlencode和urldecode  
/ ? : 等这样的字符 , 已经被 url 当做特殊意义理解了 . 因此这些字符不能随意出现 .
比如 , 某个参数中需要带有这些特殊字符 , 就必须先对特殊字符进行转义 .
转义的规则如下:
将需要转码的字符转为 16 进制,然后从右到左,取 4 ( 不足 4 位直接处理 ) ,每 2 位做一位,前面加上 % ,编码成 %XY格式
如下图中  "+" 被转义成了 "%2B"
urldecode 就是 urlencode 的逆过程

1.4 HTTP的请求方法

其中GET和POST方法是最常用的:

  • GET方法,如果提交参数,是通过url方式进行提交的。
  • POST方法,如果提交参数,是通过正文进行提交的。

它们的区别在于:

  • ​​​​参数提交的位置不同,POST方法比较私密(私密 != 安全),不会回显到浏览器的url输入框。
  • GET是通过url传参的,而url是有大小限制的,和具体浏览器有关。POST方法是由正文部分传参,一般大小没有限制。

1.5 HTTP的状态码

最常见的状态码,比如:

200(OK), 404(Not Found),403(Forbidden),302(Redirect, 重定向), 504(Bad Gateway)

        其中重定向是指当访问一个网站的时候,会跳转到另一个网址(老网站过期,跳转到新网站),或者是访问网站时,提示登陆,然后跳转到登录页面,登陆后自动跳转会原来的页面,像这些现象就是重定向。

        重定向状态码,需要浏览器提供支持,server要告诉浏览器应该跳转到哪里。而http报头中的Location就起到这个作用。

1.6 HTTP报头

HTTP常见Header

  • Content-Type: 数据类型(text/html等)
  • Content-Length: Body的长度
  • Host: 客户端告知服务器, 所请求的资源是在哪个主机的哪个端口上;
  • User-Agent: 声明用户的操作系统和浏览器版本信息;
  • referer: 当前页面是从哪个页面跳转过来的;
  • location: 搭配3xx状态码使用, 告诉客户端接下来要去哪里访问;
  • Cookie: 用于在客户端存储少量信息. 通常用于实现会话(session)的功能。

1.7 长链接与短链接

  • HTTP/1.0中,每次请求和响应都需要建立和关闭连接,这被称为
  • 而在HTTP/1.1中,引入了持久(也称为)的概念,允许多个请求和响应通过同一个TCP进行传输。
  • 在HTTP/1.1中,持久通过在请求头中添加"Connection: keep-alive"来表示客户端希望保持接,而服务器则可以在响应头中添加"Connection: keep-alive"来确认是否支持持久接。如果服务器不支持持久接,会在响应头中添加"Connection: close"来表示关闭

1.8 Cookie与Session

1.8.1 Cookie的概念

        Cookie是一种在客户端(通常是Web浏览器)和服务器之间传递数据的机制。Cookie由服务器生成,服务器发送一个Cookie给客户端时,它会包含一个Key-Value键值对,以及一些可选的属性,如过期时间、域名、路径等。客户端接收到Cookie后,会将其保存在本地,并在后续的请求中自动将该Cookie发送给服务器。

  • 在浏览器角度:Cookie其实是一个文件,该文件里保存的是用户的私密信息。
  • 在http协议角度:一旦该网站有对应Cookie,在发起任何请求的时候,都会自动在request中携带该Cookie信息。

1.8.2 Cookie的应用场景

        那么Cookie有什么作用呢?

① 避免重复登录(记住密码)

        当我们打开一个网站时,如果这个网站我们曾经登录过,那么当我们再次打开网站时,发现就不需要再次登录了,而是直接进入了首页(例如:Bilibili)。

② 权限验证

        由于HTTP是一种无状态(不知道上一次访问该网站的用户是谁)的协议,服务器单从网络连接上无从知道客户身份。怎么办呢?就给客户端们颁发一个通行证吧,每人一个,无论谁访问都必须携带自己通行证。这样服务器就能从通行证上确认客户身份了。这就是Cookie的工作原理。

Cookie其实是存在一定的安全隐患的,别人盗取自己的Cookie文件,就可以用我的身份进行认证访问特定资源;如果Cookie中保存了,用户名和密码,那么自己的账号可能会被盗取。

因此就有了Session。

1.8.3 Session的概念

        session在网络应用中称为“会话控制”,是服务器为了保存用户状态而创建的一个特殊的对象。简而言之,session就是一个对象,用于存储信息。

        虽然session并不能有效的防止信息泄露,但是衍生出了一些防御措施,例如通过常用ip地址判定用户账号是否存在异常。如果存在异常地址登录,服务器则会废弃掉当前的session_id,让用户重新认证登录。 

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

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

相关文章

使用Javassist 在android运行时生成类

序言 最近在写框架,有一个需求就是动态的生成一个类,然后查阅了相关文献,发现在android中动态生成一个类还挺麻烦。因次把一些内容分享出来,帮助大家少走弯路。 方案一 DexMaker DexMaker 是一个针对 Android 平台的库&#xf…

Java动态转发代理IP的实现方法

目录 前言 一、代理IP池的管理 二、代理IP的请求转发 总结 前言 在某些情况下,我们可能需要在Java应用程序中使用代理IP来进行网络请求。而有时候,我们希望能够动态地切换代理IP,以增加请求的成功率和效果。本文将介绍如何在Java中实现动…

【深度学习笔记】5_8 网络中的网络NiN

注:本文为《动手学深度学习》开源内容,部分标注了个人理解,仅为个人学习记录,无抄袭搬运意图 5.8 网络中的网络(NiN) 前几节介绍的LeNet、AlexNet和VGG在设计上的共同之处是:先以由卷积层构成的…

深度学习_16_权重衰退调整过拟合

所谓过拟合即模型复杂度较高,但用于训练数据集过于简单,最后导致模型将过多无用渣质作为学习对象 这个在上篇 深度学习_15_过拟合&欠拟合 已经详细介绍,以下便不再赘述。 上篇提到要想解决过拟合现象可以试着降低模型复杂度&#xff0c…

边缘计算网关在机床生产中的应用-天拓四方

随着工业4.0的推进,物联网(IoT)技术在各个工业领域中的应用日益广泛。特别是在机床行业,物联网技术的引入不仅提高了生产效率,还实现了对机床设备的实时监控和远程维护。在这一背景下,边缘计算网关的角色愈…

牛客网 计算某个字符出现的次数

在本题中,我们是要统计一个字符串中重复字母出现的次数,我们把输入的字母转换成小写,然后把字符串也都转换成小写,然后把字符串中包含字母的地方替换成空。然后直接用字符串减去替换完成的字符串,就是我们要统计的个数…

c++ opecv项目实战

1、银行卡识别项目 参考文章 操作流程: 1、提取模板的每个数字 读取图片->转换为灰度图像->二值化图像(大于10取0,小于取255)->轮廓检测->绘制轮廓->对所有轮廓进行排序->提取模板所有轮廓每个数字 2、读取信用卡->转换为灰度图像…

unity Game视图看不到贴花,但是在Scene视图能看到

解决方法:找到URP的配置文件 ,修改Quality–RederScale为1,就可以了,这是unity 的bug,2022版本以后就没有这个问题了

09 Qt扩展LineEdit组件:Input输入框

系列文章目录 01 Qt自定义风格控件的基本原则-CSDN博客 02 从QLabel聊起:自定义控件扩展-图片控件-CSDN博客 03 从QLabel聊起:自定义控件扩展-文本控件-CSDN博客 04 自定义Button组件:令人抓狂的QToolButton文本图标居中问题-CSDN博客 0…

ROS读书记录1:机器人SLAM导航核心技术与实战1

机器人SLAM导航核心技术与实战1 第一章第2章 ROS简介 视频参考: 《机器人SLAM导航核心技术与实战》书籍配套教学视频 第一章 第2章 ROS简介 ROS:机器人开发平台 ①ROS是一个分布式通信框架(最核心的本质 ②ROS是一个开发工具的集台 ③ROS是一系列开源软件包 计算…

OpenDDS之QosXml库编译(Windows + VS2019)

目录 1、需求背景2、基础环境3、编译xercesc3.1、下载xercesc3.2、编译xercesc 4、编译ACE_XML_Utils4.1、生成XML_Utils解决方案4.2、编译XML_Utils 5、编译QOS_XML_XSC_Handlerd5.1、生成QOS_XML_XSC_Handlerd解决方案5.2、编译QOS_XML_XSC_Handlerd 6、测试例子6.1、生成dum…

百度文库旋转验证码识别

最近研究了一下图像识别,一直找到很好的应用场景,今天我就发现可以用百度的旋转验证码来做一个实验。没想到效果还挺好,下面就是实际的识别效果。 1、效果演示 2、如何识别 2.1准备数据集 首先需要使用爬虫,对验证码图片进行采…

leetcode最大二叉树

在本题中,我们是要将给定的数组构成一个二叉树,其根节点是数组中最大的元素,左子树都是最大值左边元素组成的,右子树都是最大值右边元素组成的。所以本题的关键在于我们先需要找到最大的元素。 我们构造二叉树,一般是采…

Vue.js 实用技巧:深入理解 Vue.mixin

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…

商业数据增长超88%!小红书热门内容解析,用户“打卡”新玩法

长久以来,“打卡”在社交媒体盛行,频频涌现新风潮,几乎覆盖美食、旅游、美妆等众多热门行业,今天吃了什么、玩了什么、做了什么?大众都喜欢通过打卡来分享。特别是小红书平台,打卡内容热度经久不衰&#xf…

LeetCode Python - 31.下一个排列

目录 题目答案运行结果 题目 整数数组的一个 排列 就是将其所有成员以序列或线性顺序排列。 例如,arr [1,2,3] ,以下这些都可以视作 arr 的排列:[1,2,3]、[1,3,2]、[3,1,2]、[2,3,1] 。 整数数组的 下一个排列 是指其整数的下一个字典序更…

xss.haozi.me:0x03及04

这里有一个正则所以&#xff08;&#xff09;要用到实体编码 <a href"javascript:alert1">cc</a> 03 04都一样

Softmax 回归 + 损失函数 + 图片分类数据集【动手学深度学习v2】李沐动手学深度学习课程笔记

目录 Softmax回归 损失函数 图片分类数据集 Softmax回归从零开始实现 Softmax回归简洁实现 Softmax回归 回归和分类的区别 回归问题举例上节课的预测房价问题&#xff0c;分类问题就是对样本进行分类 回归和分类的具体区别 假设真实的类别为第i个类别&#xff08;值为1&#x…

掌握WhatsApp手机号质量评分:增加信息可达性

WhatsApp手机号质量评分是用于衡量用户手机号与平台互动的健康度&#xff0c;确保用户通讯时的合规性和安全性。在实掌握WhatsApp手机号质量评分实际应用中&#xff0c;这个评分会影响用户的消息发送的可达性。高质量的评分意味着用户的账户被视为可信赖的&#xff0c;其发送的…

知识点碎片一,物联网通信协议和技术

loT通信协议 1. 前言 本文属于老吴个人对物联网研发学习的路线整理&#xff0c;属于个人对物流网产品研发的知识碎片的学习&#xff0c;文章没有先后顺序&#xff0c;随笔记录。文章如果有错误&#xff0c;希望各位读者指出问题所在&#xff0c;老吴将不胜感激。 2. 名称概述…