IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> 我不知道的URL解析规则 -> 正文阅读

[移动开发]我不知道的URL解析规则

当浏览器加载一个HTML文档后,遇到link、script、img等资源时,会向后台通过HTTP/HTTPS协议请求资源。由于资源的请求路径的书写方式不同,则真正向后台发送的完整的URL也是不同的。同时因为<base>标签的存在,也会导致解析出URL不同。本文主要描述URI与web中资源URL的解析规则。

一、URI

HTTP 请求的目标是资源,可以是文档、图片或其它的东西。每一种资源都是由资源标识符(Uniform Resource Identifier)定位的。

URI 的两种形式:

1.1、URL

语法格式:

<scheme or protocol><user>:<passwdor>@<domain>:<port><path><query><fragment>

示例:

https://developer.mozilla.org/en-US/docs/Learn
tel:+1-816-555-1212
git@github.com:mdn/browser-compat-data.git
ftp://example.org/resource.txt
urn:isbn:9780141036144
mailto:help@supercyberhelpdesk.info

1.2.1 scheme or protocol

web 中常用的协议由http,https,此外当遇到其它协议时,浏览器也是知道如何处理的,比如mailto:,ftp:等。常见的方案如下:

Data URLs

语法:

data:[<mdiatype>][;base64,]<data>

mdiatype 支持多种MIME types

示例:在页面上展示一个 svg 图片

<img
  src="data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTAyNCAxMDI0IiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIyMDAiPgogIDxwYXRoIGQ9Ik01MTEuMzMgNTEyLjU3bS00NDguNDcgMGE0NDguNDcgNDQ4LjQ3IDAgMSAwIDg5Ni45NCAwIDQ0OC40NyA0NDguNDcgMCAxIDAtODk2Ljk0IDBaIiBmaWxsPSIjRjk3RjQxIj48L3BhdGg+Cjwvc3ZnPg=="
  alt=""
  srcset=""
/>

主机上的文件名

语法:

file:<文件的绝对路径>

通畅直接打开计算机上的静态文件时,使用的是file:协议。

文件传输协议-FTP (File Transfer Protocol)

语法:

ftp:<username>@<ip>
加密版本
sftp:<username>@<ip>

因为安全问题,通常使用加密版本sftp

超文本传输协议-http、https

http 协议、https 协议

内嵌的 javascript 代码

示例:

<a href="javascript:alert(123)">alert</a>

邮件

语法:

mailto:<邮箱地址>

示例:

<a href="mailto:example@163.com">mail to</a>

ssh

连接到服务器

语法:

ssh:<username>@<ip>

示例:

<a href="ssh:root@192.168.1.2">ssh</a>

电话号码

语法:

tel:+<号码>

示例:

<a href="tel:+1-816-555-1212">tel</a>

查看源码

语法:

view-source:<url>

示例:

view-source:https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Identifying_resources_on_the_Web#urls

The WebSocket API (WebSockets)

双工流通信协议

示例:

'ws://localhost:8080'

1.2.2 path

资源的路径,示例/a/b/c/index.html

1.2.3 query

查询参数,示例?key1=value1&key2=value2

1.2.4 fragment

常当作锚点,用于定位当前文档中的资源。

二、base 标签

HTML 文档中的<base>标签,会影响到相对资源请求路径的计算。

可以通过 Node/baseURI查看文档的baseURL,当<base>标签不存在时,baseURL的值为location.href.

一个文档中若出现多个<base>标签,则仅第一个生效.

baseURL 的值受location.href<base>标签影响,计算规则如下:

location.hrefbase.hrefbaseURL
http://a.com/rource/imghttp://a.com/rource/img
http://a.com/rource/img./a/b/chttp://a.com/rource/a/b/c
http://a.com/rource/img/a/b/chttp://a.com/a/b/c
http://a.com/rource/img/./a/b/chttp://a.com/rource/img/a/b/c
http://a.com/rource/img//a/b/chttp://a.com/a/b/c
*http://bbb.com/a/b/chttp://bbb.com/a/b/c

三、资源的 URL 计算方式

当资源的path书写方式不同时,最终 URL 也是不同的。path的三种场景:

  • 完整的 URL。http://a.com/1.png
  • 相对路径. ./1.png
  • 绝对路径 /1.png

解析规则如下:

baseURLPath计算结果
http://a.com/rource/img./dir/1.pnghttp://a.com/rource/dir/1.png
http://a.com/rource/img/dir/1.pnghttp://a.com/dir/1.png
http://a.com/rource/img/./dir/1.pnghttp://a.com/rource/img/dir/1.png
http://a.com/rource/img//dir/1.pnghttp://a.com/rource/img/dir/1.png
http://a.com/rource/img/http://a.com/dir/1.pnghttp://a.com/dir/1.png
  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-12-23 15:51:56  更:2021-12-23 15:52:40 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 10:35:16-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码