HTTP URL编码

news/2024/11/29 5:30:37/

文章目录

  • HTTP URL编码


HTTP URL编码

URL 就是平时我们所说的网址,一般来说 URL 只能使用英文字母、阿拉伯数字和一些英文的标点符号组成。其实在网络中 URL 并不是可以直接拿来使用的,因为 URL 中可以携带一些参数,出于安全考虑,需要使用 ASCII 字符集对其编码后才可以使用。

ASCII 的全称是 American Standard Code for Information Interchange,中文是“美国信息交换标准代码”的意思,它是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。ASCII 是最通用的信息交换标准,ASCII 第一次发表是在 1967 年,最后一次更新则是在 1986 年,到目前为止共定义了 128 个字符。

URL 的编码原则是,使用安全的字符(没有特殊用途或者特殊意义的字符)来表示那些不安全的字符。只有英文字母(a-zA-Z)、数字(0-9)、- _ . ~4 个特殊字符以及所有保留字符才可以不经编码直接使用。

在 URL 编码的过程中,会执行以下操作步骤:

  • 将所有认为“不安全”的字符转换为“%xx”的形式,其中 xx 是字符的十六进制 ASCII 值;
  • 将空格转换为加号或者“%20”,将加号转换为“%2B”。

下表中列出了要替换的字符、ASCII 码和替换后的字符。

要转换的符号ASCII 码转换后的字符要转换的符号ASCII 码转换后的字符
退格08%08O79O
tab 缩进09%09P80P
换行10%0AQ81Q
回车13%0DR82R
空格32%20 或 +S83S
!33%21T84T
"34%22U85U
#35%23V86V
$36%24W87W
%37%25X88X
&38%26Y89Y
39%27Z90Z
(40%28[91%5B
)41%29\92%5C
*42*]93%5D
+43%2B^94%5E
44%2C_95_
-45-.96%60
.46.a97a
/47%2Fb98b
0480c99c
1491d100d
2502e101e
3513f102f
4524g103g
5535h104h
6546i105i
7557j106j
8568k107k
9579l108l
:58%3Am109m
;59%3Bn110n
<60%3Co1110
=61%3Dp112p
>62%3Eq113q
?63%3Fr114r
@64%40s115s
A65At116t
B66Bu117u
C67Cv118v
D68Dw119w
E69Ex120x
F70Fy121y
G71Gz122z
H72H{123%7B
I73Il124%7C
J74J}125%7D
K75K~126%7E
L76Ldelete127%7F
M77M>127用“%xx”格式的编码表示,其中“xx”是字符的十六进制 ASCII 值
N78N

以请求“http://www.csdn.net/HTTP URL”这一 URL 为例,因为 URL 中包含一个空格,所以在请求时会把这个空格转换为“%20”,具体的 HTTP 请求如下所示:

GET /HTTP%20URL HTTP/1.1
Host: www.csdn.net
...

前面主要介绍的主要是纯英文的 URL,那如果 URL 中包含中文的话该怎么办呢?由于 ASCII 字符集中并不包含中文的编码,所以客户端会将 URL 里面的中文进行 UTF-8 编码,例如“中”字的 UTF-8 编码为“E4 B8 AD”,那么经过客户端转码后“中”字会被转换为“%E4%B8%AD”。以访问“http://www.csdn.net/?name=“CSDN博客”这一 URL 为例,HTTP 请求如下所示:

GET /?name=C%E8%AF%AD%E8%A8%80%E4%B8%AD%E6%96%87%E7%BD%91 HTTP/1.1
Host: www.csdn.net
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache
Upgrade-Insecure-Requests: 1

通过上面的 HTTP 请求可以看出,客户端直接将 URL 中的“CSDN博客”转换成了“C%E8%AF%AD%E8%A8%80%E4%B8%AD%E6%96%87%E7%BD%91”。


http://www.ppmy.cn/news/4005.html

相关文章

Python入门自学进阶-Web框架——29、DjangoAdmin项目应用-整表只读、自定义用户认证

一、整表只读 对于readonly_fields是对单个字段设置只读&#xff0c;现在要对整个表使用只读&#xff0c;也做成可配置的。在自己项目的admin.py中进行配置&#xff0c;如在mytestapp_admin.py中对Customer进行整表只读配置&#xff0c;在基类BaseAdmin中增加readonly_table …

03. SQL注入漏洞基础

03. SQL注入漏洞基础 SQL注入漏洞基础&#xff08;上&#xff09; /01 SQL注入的原理 SQL注入原理 SQL注入产生的原因 当Web应用向后台数据库传递SQL语句进行数据库操作时。如果对用户输入的参数没有经过严格的过滤处理&#xff0c;那么攻击者就可以构造特殊的SQL语句&…

网络安全常用的工具有哪些(二)

从业网络信息安全有关工作&#xff0c;当然离不了一些极为重要的网络信息安全专用工具&#xff0c;因为这是提高工作效率、省时省力的关键所在&#xff0c;那样网络信息安全常用工具都有哪些呢? 信息安全包括网络安全、操作系统安全、数据库安全、硬件设备设施安全、物理安全…

Maven 基础

1.1 简介 概念&#xff1a;Maven 的本质是一个项目管理工具&#xff0c;将项目开发和管理过程抽象成一个项目对象模型&#xff08;POW&#xff09;&#xff1b; Maven是用 Java 语言编写的。他管理的东西统统以面向对象的形式进行设计&#xff0c;最终他把一个项目看成一个对象…

6 GHz频段IMT系统对卫星固定业务干扰分析

【摘 要】6 GHz作为移动宽带发展频谱使用有利于全球5G产业持续健康发展,为满足6 GHz频段国际移动通信(IMT)系统的使用需求,需要开展6 GHz频段下IMT与同频卫星固定(地对空)业务频谱共存研究,以保护该频段的卫星固定(地对空)业务的正常工作。首先分析IMT系统对卫星固定…

RK3568平台开发系列讲解(摄像头篇)使用 Camera 的步骤

🚀返回专栏总目录 文章目录 一、使用 Camera 的步骤二、使用 SurfaceView 预览显示 Camera 数据沉淀、分享、成长,让自己和他人都能有所收获!😄 📢 本篇将介绍如何使用Camera。 一、使用 Camera 的步骤 说下 Camera 的操作步骤,后面给出实例,请结合代码理解分析: 获…

从零开始搭建Vue3.0项目

从零开始搭建Vue3.0项目所使用的软件及工具&#xff0c;环境1.确保本机已安装nodejs和npm2.Vue-cli项目搭建所使用的软件及工具&#xff0c;环境 软件vscode&#xff1a; vscode地址下载&#xff0c; svn集中式管理&#xff1a; 是一个开源的代码版本控制系统&#xff0c;用于…

【力扣】423.从英文中重建数字

423. 从英文中重建数字 | 2022-12-15 我想先统计每个字母出现次数&#xff0c;然后遍历需重建的单词&#xff0c;单词需要什么字母作为原材料&#xff0c;就直接取什么。于是下面代码的复杂性基于这样一个问题&#xff1a; 如果我们打算先重建单词one&#xff0c;建到建不出来…