2006年世界杯歌曲_冰岛世界杯排名 - guoyunzhan.com

  • 首页
  • 世界杯黑马
  • 世界杯直播app
  • 世界杯小组赛规则
  • 2025-09-23 07:38:01

    【计算机原理】深入解析 HTTP 中的 URL 格式、结构和 URL encode 转义与 URL decode 逆转义原理

    网络原理— HTTP 请求(Request)

    认识URL

    1. URL 基本格式

    平时我们俗称的 “网址” 其实就是说的 URL (Uniform Resource Locator 统一资源定位符);

    互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置,以及浏览器应该怎么处理它;

    URL的详细规则由因特网标准RFC1738进行了约定.(因特网标准 RFC1738)

    一个具体的URL:

    https://v.bitedu.vip/personInf/student?userId=10000&classId=100

    可以看到,在这个URL中有些信息被省略了;

    https:

    协议方案名;常见的有http和https,也有其他的类型;(例如访问mysql时用的jdbc:mysql)

    user:pass:

    登陆信息;现在的网站进行身份认证,一般不再通过URL进行了,一般都会省略

    v.bitedu.vip:

    服务器地址(IP地址),用于定位一个主机;此处是一个"域名",域名会通过 DNS 系统解析成一个具体的IP地址;(通过ping命令可以看到,v.bitedu.vip 的真实IP地址为118.24.113.28)

    端口号:

    每个应用程序在使用网络时,都会关联一个空闲的端口号;通过 IP 定位一台主机,通过端口号区分主机上使用网络的多个应用程序;当端口号省略的时候,浏览器会根据协议类型自动决定使用哪个端口;例如 http 协议默认使用80端口,https协议默认使用443端口;

    回忆五元组:源端口,源 ip,目的端口,目的 ip,协议类型;

    http 协议默认使用80端口,https协议默认使用443端口,站在客户端的角度,两种协议访问的端口是远端服务器的端口(目的端口),不是浏览器自身的客户端端口(源端口);

    /personInf/student:

    带层次结构的文件路径,每一层都是一个目录;

    userId=10000&classId=100:

    查询字符串(query string),本质是一个键值对结构;键值对之间使用&分隔;键和值之间使用=分隔.

    片段标识:

    片段标识主要用于页面内跳转.

    例如Vue官方文档:

    https://cn.vuejs.org/v2/guide/#%E8%B5%B7%E6%AD%A5

    通过不同的片段标识跳转到文档的不同章节

    2. 使用 ping 命令查看域名对应的IP地址

    在开始菜单中输入cmd,打开命令提示符在cmd中输入ping v.bitedu.vip,即可看到域名解析的结果.

    PS:

    有的电脑上 ping 命令会报错 ping 不是内部或外部命令,也不是可运行的程序或批处理文件;

    这种情况是因为有的 Windows10 默认没有启用 ping 命令;

    百度搜索 windows10 启用 ping 即可;

    3. query string

    query string中的内容是键值对结构;其中的 key 和 value 的取值和个数,完全都是程序猿自己约定的;我们可以通过这样的方式来自定制传输我们需要的信息给服务器.

    4. URL中的可省略部分

    协议名:

    可以省略,省略后默认为http://

    ip地址/域名:

    在HTML中可以省略(比如 img , link , script , a 标签的 src 或者 href 属性);省略后,表示服务器的 ip/域名与当前HTML所属的 ip/域名一致

    端口号:

    可以省略,省略后如果是http协议,端口号自动设为80;如果是 https 协议,端口号自动设为443.

    带层次的文件路径:

    可以省略,省略后相当于/;有些服务器会在发现/路径的时候自动访问 /index.html

    查询字符串:

    可以省略

    片段标识:

    可以省略

    5. 关于URL encode

    像/ ? : # & =…等这样的字符,已经被 URL 当做特殊意义理解了;因此这些字符不能随意出现;

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

    一个中文字符等非英文系的文字,由UTF-8或者GBK这样的编码方式构成,虽然在URL中没有特殊含义,但是仍然需要进行转义;

    否则浏览器可能把 UTF-8/GBK 编码中的某个字节,当做URL中的特殊符号;

    只不过很多浏览器为了用户看起来方便,显示 URL 某个参数的时候,显示的是转义之前的字符;

    实际上,我们可以通过抓包查看真实的数据,已经是转义之后的数据;

    我们在搜索框中输入中文,可以看见 URL 的其中一个 query string 键值对中,对属性的赋值还是中文;

    我们使用 fiddler 来对刚刚的访问操作进行抓包:

    在记事本中打开 HTTP请求 的详细信息,我们发现属性赋值的真实数据是”你好“转义后的结果:

    转义这样的操作非常重要,如果没有进行转义,就可能会使浏览器或者服务器无法正确解析,请求就会失败。

    转义的规则如下:

    将需要转码的字符转为16进制,然后从右到左;

    取4位(不足4位直接处理),每2位做一位,前面加上%,编码成%XY格式;

    例如:

    "+" 被转义成了 "%2B" urldecode 就是 urlencode 的逆过程;

    urlencode工具

    如果要使用逆过程 urldecode ,可以把 utf-8 中的 % 去掉,然后使用 urldecode ,就可以拿到转义前的数据;

    习惯养成究竟需要多久?21天神话已破!
    小米红米Note(单卡/增强版/移动4G/2GB RAM)
    世界杯黑马

    友情链接:

    ©Copyright © 2022 2006年世界杯歌曲_冰岛世界杯排名 - guoyunzhan.com All Rights Reserved.