iOS 详解URL的组成及对应属性

统一资源定位符(英语:Uniform Resource Locator,常缩写为URL),俗称网址。

如同在网络上的门牌,是因特网上标准的资源的地址(Address)。

相关定义:

URI,是uniform resource identifier,统一资源标识符,用来唯一的标识一个资源。

URN,uniform resource name,统一资源命名,是通过名字来标识资源,比如mailto:java-net@java.sun.com。


统一资源定位符的标准格式如下:

协议类型:[//服务器地址[:端口号]][/资源层级UNIX文件路径]文件名[?查询][#片段ID]


统一资源定位符的完整格式如下:

协议类型:[//[访问资源需要的凭证信息@]服务器地址[:端口号]][/资源层级UNIX文件路径]文件名[?查询][#片段ID]



HTTP

超文本传输协议([HTTP])的统一资源定位符将从因特网获取信息的五个基本元素包括在一个简单的地址中:

1.  传送协议。Data URI scheme

2.  层级URL标记符号(为[//],固定不变)

3.  访问资源需要的凭证信息(可省略)

4.  服务器。(通常为域名,有时为IP地址)

5.  端口号。(以数字方式表示,若为HTTP的默认值“:80”可省略)

6.  路径。(以“/”字符区别路径中的每一个目录名称)

7.  查询。(GET模式的窗体参数,以“?”字符为起点,每个参数以“&”隔开,再以“=”分开参数名称与数据,通常以UTF8的URL编码,避开字符冲突的问题)

8.  锚点、片段。以“#”字符为起点


iOS的URL属性对应的部分总览:

https://lzy:521@www.zuzuche.com:8080/trip/index.asp?boardID=5&ID=24618&page=1#name

scheme://user:password@host:port/path?query#fragment

absoluteString对应完整的URL String。

relative-代表,除掉baseURL的其他部分。


现在以下面的URL为例,讲解一下组成部分以及iOS所对应的属性

http://www.zuzuche.com:8080/trip/index.asp?boardID=5&ID=24618&page=1#name

从上面的URL可以看出,一个完整的URL包括以下几部分:

1.协议部分(Scheme):该URL的协议部分为“http:”,这代表网页使用的是HTTP协议。在Internet中可以使用多种协议,如HTTP,FTP,HTTPS等等本例中使用的是HTTP协议。在"HTTP"后面的“//”为分隔符

url.scheme = http;


2.域名部分:该URL的域名部分为“www.zuzuche.com”。一个URL中,也可以使用IP地址作为域名使用(如:10.20.1.2)

url.host = www.zuzuche.com


3.端口部分:跟在域名后面的是端口,域名和端口之间使用“:”作为分隔符。端口不是一个URL必须的部分,如果省略端口部分,将采用默认端口

url.port = 8080


4.虚拟目录部分:从域名后的第一个“/”开始到最后一个“/”为止,是虚拟目录部分。虚拟目录也不是一个URL必须的部分。本例中的虚拟目录是“/trip/”

   文件名部分:从域名后的最后一个“/”开始到“?”为止,是文件名部分,如果没有“?”,则是从域名后的最后一个“/”开始到“#”为止,是文件部分,如果没有“?”和“#”,那么从域名后的最后一个“/”开始到结束,都是文件名部分。本例中的文件名是“index.asp”。文件名部分也不是一个URL必须的部分,如果省略该部分,则使用默认的文件名

iOS中并没有区分虚拟目录和文件名,而是统一处理

url.path = /trip/index.asp


5.锚部分:从“#”开始到最后,都是锚部分。本例中的锚部分是“name”。锚部分也不是一个URL必须的部分

url.fragment = name


6.参数部分:从“?”开始到“#”为止之间的部分为参数部分,又称搜索部分、查询部分。本例中的参数部分为“boardID=5&ID=24618&page=1”。参数可以允许有多个参数,参数与参数之间用“&”作为分隔符。

注意:#代表网页中的一个位置。其右面的字符,就是该位置的标识符。

#是用来指导浏览器动作的,对服务器端完全无用。所以,HTTP请求中不包括#。

query = boardID=5&ID=24618&page=1

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • (原话)谈谈对HTTP协议的理解:超文本传输协议,应用于OSI网络模型中的应用层,是用于服务器传输超文本到本地浏览...
    24_yu阅读 986评论 0 1
  • 很久很久以来,我对浏览器地址栏的信息了解的甚少,只知道域名(估计不知道是这么叫)。唉。。。真是很汗颜啊!在软件专业...
    小豆soybean阅读 326评论 0 0
  • 大家都在使用URL,以及网络请求的时候各种拼接参数请求等,但是URL中每一组成部分的意义总是是不是清楚呢? 就以下...
    smile刺客阅读 3,247评论 0 2
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,435评论 19 139
  • 西藏,一个神圣的、带有神秘色彩的地方。 几乎每个人一提到都在说什么洗涤心灵、放空自己之类的话语。而对于我来说,他不...
    王晓飞Icey阅读 239评论 0 1

友情链接更多精彩内容