六、web应用程序技术——编码

文章目录

  • 一、状态与会话
  • 二、编码方案
    • 2.1 URL编码
    • 2.2 Unicode编码
    • 2.3 HTML编码
    • 2.4 Base64编码
    • 2.5 十六进制编码

一、状态与会话

  web应用程序服务器和客户端组件除了以各种方式进行数据交换和处理,应用程序还需要追踪每位用户通过不同的请求与应用程序交互的状态。例如,一个购物应用程序允许用户浏览产品目录、往购物车内添加商品、查看并更新购物车内容等。

  为实现这些功能,应用程序必须维护一组在提交各种请求过程中由用户操作生成的有状态数据。这些数据通常保存在一个叫做会话的服务器端结构中,当用户执行一个操作时,服务器端应用程序会在用户会话内更新相关信息。以后用户查看购物车内的内容时,应用程序就使用会话中的数据向用户返回正确的信息。

二、编码方案

2.1 URL编码

  URL只允许US-ASCII字符集中的可打印字符(也就是ASCII代码在0x20~0x7e范围内的字符),而且,由于其在URL方案或HTTP协议内具有特殊含义,这个范围内的一些字符也不能用在URL中。

  URL编码方案主要用于对拓展ASCII字符集中的任何有问题的字符进行编码,使其可通过HTTP安全传输。任何URL编码都是以%为前缀,其后时这个字符的两位十六进制ASCII代码。常见的一些URL编码字符如下:

  • %3d代表=;
  • %25代表%;
  • %20代表空格;
  • %0a代表新行;
  • %00代表空字节;

“+”也代表空格

2.2 Unicode编码

  为方便HTTP传输,16位unicode编码的字符以%u为前缀,其后是这个字符的十六进制Unicode码点。例如:%u2215代表/。

UTF-8是一种长度可变的编码标准,它使用一个或多个字节表示每个字符,UTF-8编码的多字节字符以%为前缀,其后用十六进制表示每个字节,如:
在这里插入图片描述

2.3 HTML编码

  HTML编码是一种用于表示问题字符以将其安全并入HTML文档的方案。有许多字符具有特殊的含义,并被用于定义文档结构而非其内容,为安全使用这些字符,就需要将其用在文档中,就需要对齐进行HTML编码。HTML编码定义了大量HTML实体来表示特殊的字面量字符,如:

在这里插入图片描述

  此外,任何字符可以使用它的十进制ASCII码进行HTML编码,例如:

在这里插入图片描述

  或者使用十六进制的ASCII码(以x为前缀),例如:

在这里插入图片描述

2.4 Base64编码

  Base64编码仅用一个可打印的ASCII字符就可以安全转换成任何二进制数据,它常用于对电子邮件附件的编码,使其通过SMTP安全传输。它还可用于在基本HTTP验证机制中对用户证书进行编码。

  Base64编码将输入数据转换成三个字节块,每个字节块被划分为四段,每段六个数据位。这六个数据位有64种不同的排列组合,因此每个段可以使用一组64个字符表示。Base64编码使用以下字符集,其中只包含可打印的ASCII字符:
在这里插入图片描述
  如果最后的输入数据块不能构成三段输出数据,就用一个或两个等号(=)补足输出。

2.5 十六进制编码

  许多应用程序在传送二进制数据时直接使用十六进制编码,用ASCII字符表示十六进制数据块。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PHP codeigniter4 搭配Nginx

> 主要是为了用Nginx运行PHP环境 1. Nginx 官方文档的配置 default.conf This configuration enables URLs without “index.php” in them and using CodeIgniter’s “404 - File Not Found” for URLs ending with “.php”. server {listen 80;listen [::]:80;se…

vuejs 设计与实现 - 简单diff算法

DOM 复用与key的作用: DOM 复用什么时候可复用? key 属性就像虚拟节点的“身份证”号,只要两个虚拟节点的 type属性值和 key 属性值都相同,那么我们就认为它们是相同的,即可以进行 DOM 的复用。即 我们通过【移动】来…

【C++】C语言基础部分知识点总结 (指针,函数,内存,关键字,预处理等)(秋招篇)

文章目录 前言讲一下32位系统常用数据类型的字节大小(stm32f103为例)讲一些C/C中常见的库什么是易变变量?代码的转化和构建通常会经历哪几个步骤:(预处理,编译,汇编,链接&#xff09…

matplotlib FormatStrFormatter设置坐标轴的标注为整数和小数【设置小数点的数目】

利用FormatStrFormatter 进行设置 1 设置为整数 import matplotlib.pyplot as plt from matplotlib.ticker import FormatStrFormatter# 创建一个图表 fig, ax plt.subplots()# 生成一些示例数据 x [1, 2, 3, 4, 5] y [1000, 2000, 3000, 4000, 5000]# 在 x 轴上设置刻度标…

HTML,url,unicode编码

目录标题 HTML实体编码urlcode编码unicode编码小结基础例题高级例题 HTML实体编码 实体表示&#xff1a; 以&符号开始&#xff0c;后面跟着一个预定义的实体的名称&#xff0c;或是一个#符号以及字符的十进制数字。 例&#xff1a; <p>hello</p> <!-- 等同…

LeetCode 热题 100 JavaScript--142. 环形链表 II

给定一个链表的头节点 head &#xff0c;返回链表开始入环的第一个节点。 如果链表无环&#xff0c;则返回 null。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链表中存在环。 为了表示给定链表中的环&#xff0c;评测系统内部使用整数…

Linux(进程间通信详解)

进程间通信&#xff0c;顾名思义&#xff0c;就是进程与进程之间互通信交流&#xff0c;OS保证了各进程之间相互独立&#xff0c;但这不意味着进程与进程之间就互相隔离开&#xff0c;在不少的情况下&#xff0c;进程之间需要相互配合共同完成某项6任务&#xff0c;这就要求各进…

git教程(第一次使用)

一、gitee和github区别 二、git使用 下载地址 windows&#xff1a;https://gitforwindows.org/ mac&#xff1a;http://sourceforge.net/projects/git-osx-installer/ 1.git初次运行前的配置 &#xff08;1&#xff09;配置用户信息 git config --global user.name "…

算法练习--链表相关

文章目录 合并两个有序链表删除排序链表中的重复元素 1删除排序链表中的重复元素 2环形链表1环形链表2相交链表反转链表 合并两个有序链表 将两个升序链表合并为一个新的 升序 链表并返回。 新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1&#xff1a; 输入&…

JavaScript |(四)正则表达式 | 尚硅谷JavaScript基础实战

学习来源&#xff1a;尚硅谷JavaScript基础&实战丨JS入门到精通全套完整版 系列笔记&#xff1a; JavaScript |&#xff08;一&#xff09;JavaScript简介及基本语法JavaScript |&#xff08;二&#xff09;JavaScript自定义对象及函数JavaScript |&#xff08;三&#xff…

计算机工作原理:进程调度

在计算机中&#xff0c;什么是进程&#xff1f;一个跑起来的程序就是一个进程&#xff0c;没跑起来就只能算一个程序。 在windows的任务管理器中&#xff0c;可以很清楚的看到有哪一些进程。 进程&#xff08;progress&#xff09;也叫任务&#xff08;task&#xff09;。 每…

yolov5代码解读之yolo.py【网络结构】

​这个文件阿对于做模型修改、模型创新有很好大好处。 首先加载一些python库和模块&#xff1a; 如果要执行这段代码&#xff0c;直接在终端输入python yolo.py. yolov5的模型定义和网络搭建都用到了model这个类(也就是以下图片展示的东西)&#xff1a;&#xff08;以前代码没…