• 浏览器如何生成URL


    点击页面中的链接,浏览器会根据源码中相对URL路径作不同的处理:

    (1)有协议名称,但没有域名信息

      对于这种形式的URL,它的协议,路径,查询字符串和片段ID都以它自身为准,但域名信息的部分,以引用它的那个页面地址为准。

    (2)没有协议名,但有域名信息

      协议名称由原发起页面确定,而所有接下来的URL信息都取自这个相对URL,构成完整的URL。

    (3)没有协议名,没有域名信息,但有路径

      如果网页中明确给出了base标签, 那么得到的URL是 base URL +路径。

      如果没有给出base标签,这种情况下分为两种结果:

      a) 如果相对URL的开头是斜杠(根目录),则忽略当前页面自身的URL信息,直接把相对路径拼在当前页面的域名后面。

      b) 如果相对URL的开头不是斜杠,则将当前页面URL的最后一个/之后的内容去掉,将剩余的内容返回作为base URL,相对路径拼接在其后。

    (4)没有协议名,没有域名信息,没有路径,但有查询字符串

      协议,域名,路径信息全部原封不动的从原引用URL复制过来,查询字符串和片段ID则来自相对URL。

    (5)只有fragment

      只替换fragment部分,其他所有信息从原引用URL复制过来。

    <base>标签

      浏览器会从当前页面的 UR中提取相应的部分来填写相对 URL 中的空白。使用 <base> 标签可以改变这一点。浏览器随后将不再使用当前文档的 URL,而使用指定的基本 URL 来解析所有的相对 URL。这其中包括 <a>、<img>、<link>、<form> 标签中的 URL。

      浏览器也会在当前页面URL的基础上对..和.进行相应调整,在地址栏生成新的请求URL。

    以上皆为个人理解,如有错误之处,欢迎留言指正。
  • 相关阅读:
    DjangoContenttype
    高并发的详解及解决方案
    Django之路由系统
    Django之ORM
    Django form表单
    AJAX
    python之协程
    python八大排序算法
    python之路-进程
    网络基础
  • 原文地址:https://www.cnblogs.com/kevin2chen/p/6419488.html
Copyright © 2020-2023  润新知