Skip to content

https://www.foo.com:443/bar/index.html?baz=baz#hash

  • 协议 => https://

    • http 超文本传输协议

    • https 更安全的 http

    • ftp 文件传输协议

  • 域名 => www.foo.com

    方便记忆,映射到 IP 地址或另一个域名。

  • 端口号 => 443

    取值范围 0-65535,用端口号来区分同一台服务器上的不同项目。

    • http 80

    • https 443

    • ftp 21

    • SMTP 25

    • MySQL 3306

    • Redis 6379

  • 请求资源路径名称 => /bar/index.html

    服务器接收到请求后

    • 根据端口号找到对应的项目

    • 根据请求资源的路径名称找到资源文件

    • 读取资源文件中的内容

    • 把内容返回

    不指定资源路径名称服务器会找默认的资源,如 default.html、index.html..., 可以在服务器配置多个默认资源,如果没找到返回 404。

    伪 URL 地址的处理

    https://item.jd.hk/index.php?id=2688449 => https://item.jd.hk/2688449.html

    URL 重写技术常用于将动态网址(如带有参数的 URL)转换为更简洁、易读的“伪静态”网址。这样做的主要目的是提升 SEO,因为搜索引擎更容易收录结构清晰、关键词明确的静态 URL。

  • query 参数 ?baz=baz

    客户端向服务器传参的三种方式:query 参数请求头请求体,query 参数也可以用于不同页面之间的信息交互

  • hash值 #hash

    • 页面内导航

      hash常用于页面内跳转,定位到页面中的某个元素(如标题、段落等)。浏览器会自动滚动到带有对应id的元素位置。

    • 单页应用(SPA)路由

      在前端单页应用中,hash常用来模拟不同的页面路由。通过监听hash变化(window.onhashchange),可以实现页面内容的切换而无需刷新页面。

    • 不会被发送到服务器

      hash部分不会被包含在HTTP请求中,服务器无法直接获取hash内容,它只在浏览器端起作用。

    • 状态记录与分享

      可以用 hash 记录页面的某种状态,用户刷新或分享带有 hash 的 URL 时,可以直接恢复到对应状态或位置。

URI / URL / URN 区别

URI(Uniform Resource Identifier,统一资源标识符)

是一个通用的概念,用来唯一标识一个资源,不管这种标识是基于名字还是基于位置。URL 和 URN 都是 URI 的子集。

URL(Uniform Resource Locator,统一资源定位符)

用于定位互联网上的资源,必须包含资源的访问方式(协议)和位置(地址)。

sh
https://example.com:8080/index.html

URN(Uniform Resource Name,统一资源名称)

用于命名某个互联网资源,通常与位置无关,资源移动后仍然有效。

sh
# urn 表示它是一个 URN
# isbn 是命名空间标识符
# 978-7-302-12100-6 是书籍的国际标准书号
urn:isbn:978-7-302-12100-6