码迷,mamicode.com
首页 > 其他好文 > 详细

9 "网址"--URI

时间:2021-05-24 02:30:49      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:转换   tar   mic   格式   特殊   sch   target   用户   png   

URI和URL

  1. URI:统一资源标识符(Uniform Resource Identifier)

  2. URL:统一资源定位符(Uniform Resource Locator),本质是一个字符串,作用是唯一地标记资源的位置或者名字。

  3. URL是URI的一个子集

URI详细介绍

URI的组成

scheme、host:port 、path 、query 和fragment 5个部分组成。
技术图片

  1. 第一部分

    • schema,“协议名”,包括 http,https,ftp,ldap,file,news 等方法
    • :// 是分隔符
  2. 第二部分

    • “authority”的部分,表示资源所在的主机名
    • 形式为:host:post 主机名+端口号
    • 主机名,ip地址或域名
      1. 对于 file协议,主机名可以省略,为localhost
      2. 对于 http,https协议,主机名不可省略
    • path 标记资源所在的位置,包含 /
  3. 第三部分

    • 参数,用“?”开始,但是不包含“?”,表示对资源的额外要求
    • 格式:“key=value”字符串,用“&”连接
  4. 第四部分

    • 身份信息“user:passwd@” ,表示主机登录的用户名和密码
    • 明文展示,有安全隐患,postman测试是可使用
  5. 第五部分

    • 片段标识符“#fragment”,它是 URI 所定位的资源内部的一个“锚点”或者说是“标签”。
    • 浏览器可以在获取资源后直接跳转到它指示的位置。
    • 只给浏览器看,不发送给客户端。

URI的查询参数

  1. 方法1:使用“协议名 + 主机名 + 路径”的方式
  2. 方法2:适用“协议名 + 主机名 + 路径 + 参数”的方式

URI的编码

  1. 只能使用 ascii 编码
  2. 对于 ascii 字符集之外,及特殊字符使用 转义,把它们转换成与 URI 语义不冲突的形式
  3. 转义规则:把字符(unicode)编码成 utf-8,utf-8用1-4字节表示,每个字节转换成十六进制,前面再加上一个“%”,最后把每个字节转换后的结果拼接起来。
    • 空格被转义成“%20”
    • “?”被转义成“%3F”
    • 中文、日文等则通常使用 UTF-8 编码后再转义,例如“银河”会被转义成“%E9%93%B6%E6%B2%B3”

疑问

  1. HTTP 协议允许在在请求行里使用完整的 URI,但为什么浏览器没有这么做呢?

    • 因为请求头字段里都有,没有必要重复。
  2. URI 的查询参数和头字段很相似,都是 key-value 形式,都可以任意自定义,那么它们在使用时该如何区别呢?

    • query 参数针对的是资源(uri),而字段针对的是本次请求,也就是报文。
    • 一个是长期、稳定的,一个是短期、临时的。

9 "网址"--URI

标签:转换   tar   mic   格式   特殊   sch   target   用户   png   

原文地址:https://www.cnblogs.com/hqq2019-10/p/14746675.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!