前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >第二十九期:浏览器导航---URI 和 URL

第二十九期:浏览器导航---URI 和 URL

作者头像
terrence386
发布2022-07-15 10:09:36
6780
发布2022-07-15 10:09:36
举报
文章被收录于专栏:JavaScript高级程序设计

浏览器导航

这篇内容不多,但是和接下来的两三篇可共同组成浏览器导航的知识体系。

这篇主要写 URI 和 URL

URI

术语中,统一资源标识符(Uniform Resource Identifier,URI)是一个用于标识某一互联网资源名称的字符串。该种标识允许用户对任何(包括本地和互联网)的资源通过特定的协议进行交互操作。URI由包括确定语法和相关协议的方案所定义。

URI的格式

URI的格式由协议名,冒号,和协议对应的内容构成。具体的格式如下:

代码语言:javascript
复制
[协议名]://[用户名]:[密码]@[服务器地址]:[服务器端口号]/[路径]?[查询字符串]#[片段ID]

例如:

代码语言:javascript
复制
ldap://[root@49.233.192.228]/etc=GB?test?one#454

URL

URL是Uniform Resource Locator的缩写,译为"统一资源定位符"。

URL是一种URI,它标识一个互联网资源,并指定对其进行操作或获取该资源的方法。可能通过对主要访问手段的描述,也可能通过网络“位置”进行标识。

比如:

代码语言:javascript
复制
http://www.909500.club/book/test.pdf

表示通过http协议从主机名www.909500.club的主机上获取test.pdf文件。

两者关系

统一资源定位符 是 统一资源识别符的子集。

URL 是 URI的表现形式。

URI编码

  • encodeURI()

encodeURI() 函数通过将特定字符的每个实例替换为一个、两个、三或四转义序列来对统一资源标识符 (URI) 进行编码 (该字符的 UTF-8 编码仅为四转义序列)由两个 "代理" 字符组成)。

encodeURI 会替换所有的字符,但不包括以下字符,即使它们具有适当的UTF-8转义序列:

类型

包含

保留字符

; , / ? : @ & = + $

非转义的字符

字母 数字 - _ . ! ~ * ' ( )

数字符号

#

请注意,encodeURI 自身无法产生能适用于HTTP GET 或 POST 请求的URI。

因为 "&", "+", 和 "=" 不会被编码,然而在 GET 和 POST 请求中它们是特殊字符。

  • encodeURIComponent()

encodeURIComponent除以下字符外全部转义。

代码语言:javascript
复制
 A-Z a-z 0-9 - _ . ! ~ * ' ( )

为了避免服务器收到不可预知的请求,对任何用户输入的作为URI部分的内容你都需要用encodeURIComponent进行转义。

对于 application/x-www-form-urlencoded (POST) 这种数据方式,空格需要被替换成 '+',所以通常使用 encodeURIComponent 的时候还会把 "%20" 替换为 "+"。

下面这种方式是比较安全的:

代码语言:javascript
复制
function fixedEncodeURIComponent (str) {
  return encodeURIComponent(str).replace(/[!'()*]/g, function(c) {
    return '%' + c.charCodeAt(0).toString(16);
  });
}
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-11-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 JavaScript高级程序设计 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 浏览器导航
  • URI
  • URI的格式
  • URL
  • 两者关系
  • URI编码
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档