URL的组成结构与含义、跨域

 url结构

一个标准的 URL 地址由 protocol、hostname、port、path、parameters、query 几部分组成。

以这个url为例:

http://news.qq.com/a/20160209/012154,htm?a=1&b=2&c=3

1) protocol

指 http:// 部分,是协议的意思。协议就是一套规则,定义了数据的封装、打包、拆包和解释的规则,http:// 即表示只能通过 HTTP 这套规则访问这个页面资源。

大家是否还见过 https、ftp、thunder 这些协议头? URL 地址标识了一个资源,协议头表示我们可以通过不同的规则(协议)访问它。当然,前提是存放这些资源的服务器支持这个协议。

在剧院,座位可以看作资源,观众只有获取资源,才能看到剧目。过年时观众比较多,为了防止发生踩踏事件,剧院不但开放正门,还开放两个侧门。可以想象,观众的票面上,一定标识了座位的信息(几排几号),这相当于 URL 的后半部分。

有的票面标了从正门进,有的标了从侧门进,这就相当于 URL 的协议头标识了协议,一种是按走正门的规则进入,另一种是按走侧门的规则进入,观众拿着走正门的票从侧门进入,会被拒绝而无法获取资源(座位),所以采用何种协议至关重要。

前面讨论的前提都是要侧门开放,即服务器支持这种协议。如果不开放侧门,地址就是无效的,访问不到这个资源。

总之,协议头标识了访问具体资源的规则,以后大家看到不同的协议头,就想想 这个例子。当然,也可以设计一个协议,例如 abc://,这叫作自定义协议。

2) hostname

hostname 称为主机名,在本例的 URL 中,news.qq.com 就是 Hostname。

可以将主机理解为一台名叫 news.qq.com 的机器,这台主机在 qq.com 域名下。qq.com 叫作 一级域名,很多人认为 www.qq.com 是一级域名,其实它只不过是一个二级域名,www 等同于刚才介绍的 news。

www.qq.com、news.qq.com、qzone.qq.com、v.qq.com 等都是二级域名。

3) port

port 称为端口号,一般 HTTP 的端口号为 80,HTTPS 的为 443,可以理解为计算机有很多个提供服务的点,比如可以用默认的 80 端口来提供服务,也可以用 81 端口来提供服务。

把一个主机比喻成一间房子的话,这间房子可以有 65536 个门,门号就是端口号,这么多端口都可以达到进出的目的。上面的 URL 中没有任何的端口 号,即默认为 80。

以 http://news.qq.com:8080/a/20160209/012154.htm?a=1&b=2&c=3#p=1 为例,这 个 URL 指定了从 8080 这个端口号(即从这个门)访问资源,这个网页服务器必须先 在这个端口部署服务,才能供用户访问(先把门打开,才能提供服务)。

4) path

接下来是 /a/20160209/012154.htm/。hostname 后面的一长串全部称为 path,是“路 径”的意思,即最终文件所在的路径和文件名,只不过此地址的文件存储在腾讯的服 务器上,即 news.qq.com 这个域名下的若干台机器上。

5) parameters

?a=1&b=2&c=3 这一部分称为参数(parameters ),也叫查询。

它的目的是在 URL 中带上一些本地的信息传给服务器,a、b、c 三个字符是为了方便大家理解杜撰的 (在 baidu 的 URL 中的参数是这样的:?ie=utf8&f=8&rsv_bp=1&tn=baidu ),这些 KeyValue 的键值对标识了一些特定的意义,最终要由服务器进行判断处理。

其中参数部分加上一些随便填写的值并不会出错,比如 &d=4,只不过服务器不解析这部分 罢了。

跨域

* 同源策略:浏览器出于安全考虑,只允许与本域下的接口交互。不同源的客户端脚本在没有明确授权的情况下,不能读写对方的资源。(比如你刚刚登录了淘宝买了东西,但是你现在又点进去了另外一个网站,那么你现在的淘宝账户是属于登录状态,而并没有登出,所以你现在点进去的这个网站可以看到你的账户信息,并操作你的账户信息,这样子就很危险)

浏览器请求的三种报错:

1、请求未发送

2、请求发送后,服务器发现不一样,服务器未反应。

3、请求发送,服务器有反应,数据返回的时候,浏览器发现不对,被拦截。

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值