【Linux】HTTP协议

目录

预备知识

认识url

urlencode和urldecode

http和https的区别

http request 和 http response

http request格式:

http reponse格式:

HTTP的请求方法

HTTP的状态码

HTTP常见Header

cookie文件 

cookie是什么

问题

解决方案


预备知识

认识url

平时我们俗称的“网址”就是url,url也就是统一资源定位符

‘ ?’后面可以带参,我们可以带上的动态数据,后面是KV键值对

urlencode和urldecode

        少量的情况,提交或者获取的数据本身可能包含url中特殊字符冲突的字符,要求BS双发进行编码(encode)和解码(decode), / ? : 等这样的字符, 已经被url当做特殊意义理解了. 因此这些字符不能随意出现。

比如, 某个参数中需要带有这些特殊字符, 就必须先对特殊字符进行转义。

转义的规则如下: 将需要转码的字符转为16进制,然后从右到左,取4(不足4位直接处理),每2位做一位,前面加上%,编码成%XY。

例如 “+”被转义成 %2B
urldecode就是urlencode的逆过程,下面是一个url的encode和decode工具
UrlEncode编码/UrlDecode解码 - 站长工具为了让包含中文的URL可以使用,您可以使用本工具对中文进行UrlEncode编码。icon-default.png?t=N7T8https://tool.chinaz.com/Tools/urlencode.aspx

http和https的区别

https:端口号443 https://www.baidu.com

http:端口号80 http://183.2.172.185

一、传输信息安全性不同

  • http协议:是超文本传输协议,信息是明文传输。如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息。
  • https协议:是具有安全性的ssl加密传输协议,为浏览器和服务器之间的通信加密,确保数据传输的安全。

二、连接方式不同

  • http协议:http的连接很简单,是无状态的。
  • https协议:是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议。

三、端口不同

  • http协议:使用的端口是80。
  • https协议:使用的端口是443

http request 和 http response

http request格式:

        格式为:请求行,请求报头,空行,请求正文;

        请求行包含请求方法(GET、POST),然后以空格符为分隔符跟上请求的资源地址url与HTTP版本。

        请求报头每一行都是请求属性,以Key-Value的结构,以/r/n为换行符,其中包含一个请求正文的长度,以此来正确读取请求正文内容。

        请求报头和请求正文之间有一行空行,以正确分隔请求报头和请求正文。

        请求正文是我们要上传的内容,可以没有。具体如下图所示:

 

http reponse格式:

        格式为:状态行,响应报文,空行,响应正文,具体如下:

  • fiddler抓包 代理
  • Postman

HTTP的请求方法

最常用的是GET,POST;

如果我们要提交参数给我们的服务器,使用GET方法,提交的参数是通过url提交

HTTP的状态码

最常见的状态码, 比如 200(OK), 404(Not Found), 403(Forbidden), 302(Redirect, 重定向), 504(Bad Gateway) 

HTTP常见Header

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

Cookie一般会带文件中的内容,用户名和密码,cookie文件有文件级和内存级

cookie文件 

cookie是什么

        cookie是网络服务器通过将其存储在网络浏览器上的小量信息来记住访客的特定信息。这些信息包括上次访问的位置、花费的时间或用户首选项(如样式表)。浏览器会将Cookie存储在RAM中,当访客关闭浏览器时,也会将这些信息存储在计算机的硬盘上。如下:

        cookie文件分为内存级和文件级,它的存在提高了用户体验,但是他也存在一些安全问题。

问题

cookie文件的存在也造成了一些问题,如下:

  1. cookie被盗取的问题
  2. 个人私有信息泄露

解决方案

session技术(解决个人私有信息泄露的问题)

session+cookie 是基于http协议会话保持原理

一般客户端是不止一个的,我们需要将成千甚至上万个session文件管理起来,在实际应用中 ,是将这些session信息托管给Redis集群管理。

上述方法中,即使cookie文件被盗取,个人私有信息也不会被泄露,因为引入session技术的本质就是原本让浏览器本身自己维护的用户信息放到服务器维护。

PS:至于cookie文件被盗取的问题目前是解决不了的,但是我们session id是由服务器端统一管理分配的,服务器端可以将异地登陆的用户,删除其原有session id,让其重新登录。也就是说虽然我们无法彻底解决黑客冒用用户身份进行登录,但是服务器端可以通过对session id各种取消,修改,暂停等操作来达到控制客户端的目的。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

pytorch 数据集处理以及模型训练

1.基础类说明 为了统一数据的加载和处理代码,pytorch提供了两个类,用来处理数据加载: torch.utils.data.DataLoader torch.utils.data.Dataset 通过这两个类,可以使数据集加载和预处理代码,与模型训练代码脱钩…

10.网络游戏逆向分析与漏洞攻防-游戏网络架构逆向分析-接管游戏发送数据的操作

内容参考于:易道云信息技术研究院VIP课 上一个内容:接管游戏连接服务器的操作 码云地址(master 分支):染指/titan 码云版本号:00820853d5492fa7b6e32407d46b5f9c01930ec6 代码下载地址,在 ti…

RTF文件格式解析(二)图像问题

图片 一个RTF文件可以包含由其他应用创建的图象。这些图象可以是16进制(默认的)或2进制格式。图象属于目标引用&#xff0c;由\pict 控制字开始。如后面的例子中将描述的&#xff0c;\pict关键字应在\*\shppict引用控制关键字之后。一个图象引用具有如下语法&#xff1a; <p…

frp 内网穿透 linux部署版

frp 内网穿透 linux部署版 前提安装 frp阿里云服务器配置测试服务器配置访问公网 前提 使用 frp&#xff0c;您可以安全、便捷地将内网服务暴露到公网&#xff0c;通过访问公网 IP 直接可以访问到内网的测试环境。准备如下&#xff1a; 公网 IP已部署好的测试服务 IP:端口号阿…

v68.指针

1.取地址运算 1.1 1.2 打印出变量的地址&#xff0c;需要使用 %p&#xff0c;注意后面加运算符 & 。注意输出地址的代码格式。%p会把这个值作地址来输出&#xff0c;输出的结果前面会加0x&#xff0c;并且以16进制的方式来输出地址 注意int 的大小是否和地址大小相同取决…

嵌入式 Linux 下的 LVGL 移植

目录 准备创建工程修改配置修改 lv_drv_conf.h修改 lv_conf.h修改 main.c修改 Makefile 编译运行更多内容 LVGL&#xff08;Light and Versatile Graphics Library&#xff0c;轻量级通用图形库&#xff09;是一个轻量化的、开源的、在嵌入式系统中广泛使用的图形库&#xff0c…

算法:动态规划全解(上)

一、动态规划初识 1.介绍 动态规划&#xff0c;英文&#xff1a;Dynamic Programming&#xff0c;简称DP&#xff0c;如果某一问题有很多重叠子问题&#xff0c;使用动态规划是最有效的。所以动态规划中每一个状态一定是由上一个状态推导出来的。 例如&#xff1a;有N件物品…

逆向案例三:动态xhr包中AES解密的一般步骤,以精灵数据为例

补充知识&#xff1a;进行AES解密需要知道四个关键字&#xff0c;即密钥key,向量iv,模式mode,填充方式pad 一般网页AES都是16位的&#xff0c;m3u8视频加密一般是AES-128格式 网页链接:https://www.jinglingshuju.com/articles 进行抓包结果返回的是密文&#xff1a; 一般思…

软考48-上午题-【数据库】-数据查询语言DQL3-表的连接查询

一、表的连接查询 数据查询中&#xff0c;经常需要提取两个或者多个表的数据&#xff0c;需要用表的连接来实现若干个表数据的联合查询。格式如下&#xff1a; select 列名1, 列名2, 列名3, ...... from 表1, 表2, ...... where 连接条件 在SQL SERVER中&#xff0c;连接分为…

Apipost自动化测试持续集成配置方法

安装 Apipost-cli npm install -g apipost-cli 运行脚本 安装好Apipost-cli后&#xff0c;在命令行输入生成的命令&#xff0c;即可执行测试用例&#xff0c;运行完成后会展示测试进度并生成测试报告。 Jenkins配置 Apipost cli基于Node js运行 需要在jenkins上配置NodeJs依…

Python中re(正则)模块的使用

re 是 Python 标准库中的一个模块&#xff0c;用于支持正则表达式操作。通过 re 模块&#xff0c;可以使用各种正则表达式来搜索、匹配和操作字符串数据。 使用 re 模块可以帮助在处理字符串时进行高效的搜索和替换操作&#xff0c;特别适用于需要处理文本数据的情况。 # 导入…

【MySQL】MySQL复合查询--多表查询自连接子查询 - 副本

文章目录 1.基本查询回顾2.多表查询3.自连接4.子查询 4.1单行子查询4.2多行子查询4.3多列子查询4.4在from子句中使用子查询4.5合并查询 4.5.1 union4.5.2 union all 1.基本查询回顾 表的内容如下&#xff1a; mysql> select * from emp; ----------------------------…

ubuntu安装新版本的CMake

来到cmake官网选择版本 我需要在嵌入式板子上的Ubuntu18安装使用 故我选择aarch64版本。 按F12进入检查模式得到下载链接。 在板子上运行以下命令&#xff0c;获取安装脚本 wget https://github.com/Kitware/CMake/releases/download/v3.28.3/cmake-3.28.3-linux-aarch64.s…

Django模板(四)

一、include标签 加载一个模板,并在当前上下文中进行渲染。这是一种在模板中 “包含” 其他模板的方式 简单的理解:在当前模板中引入另外一个模板内容 1.1、使用方法 模板名称可以是变量,也可以是单引号或双引号的硬编码(带引号)的字符串 {% include "foo/bar.ht…

接口自动化测试之HTTP协议详解

协议 简单理解&#xff0c;计算机与计算机之间的通讯语言就叫做协议&#xff0c;不同的计算机之间只有使用相同的协议才能通信。所以网络协议就是为计算机网络中进行数据交换而建立的规则&#xff0c;标准或约定的集合。 OSI模型 1978年国际化标准组织提出了“开放系统互联网…

BerDiff: Conditional Bernoulli Diffusion Modelfor Medical Image Segmentation

BerDiff:用于医学图像分割的条件伯努利扩散模型 摘要&#xff1a; 医学图像分割是一项具有挑战性的任务&#xff0c;具有固有的模糊性和高度的不确定性&#xff0c;这主要是由于肿瘤边界不明确和多个似是而非的注释等因素。分割口罩的准确性和多样性对于在临床实践中为放射科…

【UVM_Introduction Factory_2024.02.28】

Introduction 通用验证方法学UVM&#xff08;2014年1.2版本延续至今&#xff09; 作用&#xff1a; 降低验证工程复杂度&#xff0c;保证验证可靠性&#xff0c;提升验证效率 提供一套标准的类库&#xff0c;减轻环境构建的负担&#xff0c;更多的投入制定验证计划和创建测试场…

springboot228高校教师电子名片系统

高校教师电子名片系统的设计与实现 摘 要 传统信息的管理大部分依赖于管理人员的手工登记与管理&#xff0c;然而&#xff0c;随着近些年信息技术的迅猛发展&#xff0c;让许多比较老套的信息管理模式进行了更新迭代&#xff0c;名片信息因为其管理内容繁杂&#xff0c;管理数…

【数据结构】数组

第一章、为什么数组的下标一般从0开始编号 提到数组&#xff0c;读者肯定不陌生&#xff0c;甚至还会很自信地说&#xff0c;数组很简单。编程语言中一般会有数组这种数据类型。不过&#xff0c;它不仅是编程语言中的一种数据类型&#xff0c;还是基础的数据结构。尽管数组看起…

代码随想录算法训练营29期|day64 任务以及具体安排

第十章 单调栈part03 有了之前单调栈的铺垫&#xff0c;这道题目就不难了。 84.柱状图中最大的矩形class Solution {int largestRectangleArea(int[] heights) {Stack<Integer> st new Stack<Integer>();// 数组扩容&#xff0c;在头和尾各加入一个元素int [] ne…