当前位置: 首页 > news >正文

HTTP权威指南------URL与资源

目录

URL标准格式 

URL快捷方式

动扩展URL

字符

 方案详解


web基础中介绍了URI、URL与URN;

URI是一类更通用的资源标识符,URL是它的一个子集;

URI是一个通用的概念,它主要由URL与URN组成;

URL是通过描述资源的位置来标识资源的,而URN则是通过名字来识别资源的,

URL标准格式 

例如:你想要获得URL https://www.baidu.com/index.html,那么URL分为以下三部分:

第一部分:方案,方案可以告知web客户端怎样访问资源,通过何种协议;URL并不只是仅使用HTTP协议,如FTP、rtsp、email等协议都是可以的。

第二部分:地址,服务器的地址,可以是域名也可以是IP地址

第三部分:资源路径,路径说明了请求的是服务器上面的那部分资源

 

# 方案;需注意,协议是不区分大小写的
http://www.baidu.com
HTTP://www.baidu.com

# 主机与端口;主机指向服务器,端口指向服务
http://www.baidu.com:80

# 用户名与密码;
ftp://anonymous@ftp.prep.ai.mit.edu/pub/gnu
ftp://anonymous:my_passwd@ftp.prep.ai.mit.edu/pub/gnu
http://joe:joespasswd@www.joes-hardware.com/sales_info.txt

# 路径
http://www.baidu.com/Images/index.html

# 参数;这个例子有两个路径段,hammers和index.html。hammers路径段参数有sale,其值为false;index.html段有参数graphics,其值为true。
http://www.baidu.com/hammers;sale=false/index.html;graphics=true

# 查询字符串;查看编号为12731的字段内容是否存在
http://www.baidu.com/inventory-check.cgi?item=12731

# 片段;片段组件用来表示一个资源内部的片段,比如URL指向HTML文档中一个特定的图片或者小节
http://www.baidu.com/tools.html#drills
  1.  查询组件是指URL中出现在问号?后的一系列键值对(key=value形式),多个键值对使用&分隔,与参数组件一样,查询组件也存在特殊字符编码的问题。
  2. 主机既可以用域名,也可以用IP地址。
  3. 端口是可选的,如果没有填上端口则使用schema指定的协议的默认端口。

URL快捷方式

绝对URL:URL中包含访问资源所需的全部信息;如:http://www.163.com/new.html

基础URL:针对同一个网站来讲,其相同的url部分,如:http://www.163.com

相对URL:去除基础URL,剩余的URL就是相对URL;如:/new.html,完整显示为http://www.163.com/new.html。相对URL只是URL的片段或一小部分,处理url的应用程序要能在相对和绝对URL之间进行转换。

实现相对url转换为绝对url的第一步就是找到基础url,怎么找基础url?

答:

  1. 在资源中显式提供,有些资源会显式的提供基础url。如:html文档中可能会包含了一个定义基础url的html标记<BASE>,通过它来转换那个html文档中的所有相对url
  2. 封装资源的基础url,如没显式的找到基础url,可以将其所属资源的url作为基础url。简单理解就是:将该相对url超链接所在页面绝对url中的基础url作为其基础url。
  3. 没有基础url:只有相对url,但有时可能只是一个不完整的或损坏了的url

 

动扩展URL

自动扩展:很多浏览器会在用户提交URL/输入URL时尝试自动扩展URL,这样为用户提供便捷,用户不需要输入完整的URL,浏览器自动扩展

自动扩展特URL特性

主机名扩展:只要有些小提示,浏览器就可以帮你将输入的主机名扩展为完整的主机名,比如:输入baidu,构建出www.baidu.com;弊端在于有时候会为其他http应用程序带来问题,比如代理,后面详细解释

历史扩展:将以前用户访问过的URL记录储存起来,当用户输入URL时将其与历史记录中的URL前缀进行匹配,并提供一些完整的选项供用户选择

字符

URL作为互联网资源的标识,必须是可移植的、完整的。意思就是说,一个URL确定后,不管如何复制粘贴,这个URL的信息不能丢失!但是,URL使用的编码是ASCII,中文是不支持的(当然,不止是中文这么简单,ASCII无法表示所有字符这才是硬伤)。为了使用ASCII,又要支持其他字符,所以,编码就来了。其实这种编码就是转义,使用A代表B(比如URL中包含的类似%7E符号,就是转义之后的,代表着~这个特殊符号)。另外,还有一些特殊的保留字符(就像C语言中的关键字一样),若在保留场合之外使用需要编码。下面列举了这些字符:

为什么需要转义机制?

  • 1. 有些协议所使用的传输方法就会剥去一些特定的字符。
  • 2. 设计者希望URL可读,这就会引入一些语义化字符。
  • 3. URL必须是完整的,就是想在URL上塞进除安全字符之外的特殊字符。
  • 为了防止这些语义化或者特殊字符给剥去,URL就必须将不安全的字符编码转义为安全字符,才进行传输。 

 方案详解

 

相关文章:

  • 网站导航怎么做外链/同城推广引流平台
  • 柳州专业网站建设加盟/广告联盟赚钱app
  • 建立企业网站的目的/seo网站课程
  • 贵阳疫情最新消息通知/重庆seo搜索引擎优化优与略
  • wordpress代码分割/百度手机助手app下载
  • 微信公众号封面制作网站/seo关键词快速排名
  • 算法| Java的int类型最大值为什么是21亿多?
  • 【每日一题Day64】LC1799N 次操作后的最大分数和 | 状态压缩dp 状态压缩+dfs+记忆化搜索
  • C语言重点解剖预处理要点速记
  • vue-elementUI后台管理系统,已实现用户管理、菜单管理、角色管理、公司管理、权限管理、支付管理等
  • 数字ic验证|SoC的功能验证
  • Godzilla(哥斯拉)安装与使用
  • 以英雄之名为S9总决赛助攻! 虎牙直播and华为云CDN,team work才会赢
  • WINDOWS下安装ORACLE客户端报错:无法访问临时位置
  • InnoDB架构体系
  • 经典设计模式总则
  • Cocos2dx:CCArray 动态数组的创建使用以及释放,CCArray的简单使用,如何将不同类型的数值存入数组中并调用
  • 公开竞价与封闭式竞价有什么不同?