跨域之法(一)——初探跨域

什么是跨域?

  所谓跨域, 就是当前域到了另外的域,域不仅仅指的是不同的域名网站,可能同一个域名不同的端口号也算不同的域。浏览器是有规则的,只要协议、域名、端口有任何一个不同,都被当作是不同的域。协议指的是http,或者https等。

下面给出一个列表,指出不同域的情况:

domin

注:
主域名 (Domain Name,现也有简称为”Domain”),是用作识别您的网站,例如 yourdomain.com。 域名比IP地址更容易记住,可以让大众更快捷容易地通过域名找到你的网站。
域名,是没有重复的,一个域名只会代表一个位置,您选定一个独一无二的主域名后,需向认可的域名注册商注册您域名。 我们亦可为您注册域名。
子域名是一个另外的网页,有独立不同的内容,但不是一个新的域名。 子域名是无须申请的,当你登记了你自己的域名后,你就可以在你的域名前加上任何子域名。
例如:en.yourdomain.com 是 yourdomain.com 的子域名。

同源策略

基于网络安全的 同源策略( MDN解释 )的限制,正常情况下我们不能在不同域操作不同域下的对象的,比如a.com域下操作b.com域的数据。

但也有特殊情况,有些情况是要访问到别的网站的,比如加载一张图片,这张图片可能在别的网站,还有加载一个js文件,也是有可能在别的网站的,还有嵌入一个frame元素,也可以访问到别的网站的内容。

跨域方式

所以跨域正是利用了上面几点,比如:

  • jsonp利用加载js文件的功能,在script标签中的src指定为目标网站的js.同理,还有image标签的src属性也可以跨域。
  • iframe能直接加载别的网站的内容到自己的网站里来,从iframe加载内容到本站后,两边是存在着数据交互的,可以用document.domainwindow.name
  • HTML5中引进了一个叫window.postMessage方法来跨域传送数据,这其实也是利用了iframe
  • 除此之外,还有flash,服务器代理等跨域方法

接下来就详细地讲下前端怎么解决跨域问题。

文章目录
  1. 1. 什么是跨域?
    1. 1.1. 同源策略
    2. 1.2. 跨域方式