Menu Close

javascript的二级域名跨域问题.源自百度ueditor

什么是跨域

JavaScript出于安全方面的考虑,不允许跨域调用其他页面的对象。但在安全限制的同时也给注入iframe或是ajax应用上带来了不少麻烦。这里把涉及到跨域的一些问题简单地整理一下:
首先什么是跨域,简单地理解就是因为JavaScript同源策略的限制,a.com 域名下的js无法操作b.com或是c.a.com域名下的对象。更详细的说明可以看下表:

URL 说明 是否允许通信
http://www.a.com/a.js
http://www.a.com/b.js
同一域名下 允许
http://www.a.com/lab/a.js
http://www.a.com/script/b.js
同一域名下不同文件夹 允许
http://www.a.com:8000/a.js
http://www.a.com/b.js
同一域名,不同端口 不允许
http://www.a.com/a.js
https://www.a.com/b.js
同一域名,不同协议 不允许
http://www.a.com/a.js
http://70.32.92.74/b.js
域名和域名对应ip 不允许
http://www.a.com/a.js
http://script.a.com/b.js
主域相同,子域不同 不允许
http://www.a.com/a.js
http://a.com/b.js
同一域名,不同二级域名(同上) 不允许(cookie这种情况下也不允许访问)
http://www.cnblogs.com/a.js
http://www.a.com/b.js
不同域名 不允许
特别注意两点:
第一,如果是协议和端口造成的跨域问题“前台”是无能为力的,
第二:在跨域问题上,域仅仅是通过“URL的首部”来识别而不会去尝试判断相同的ip地址对应着两个域或两个域是否在同一个ip上。
“URL的首部”指window.location.protocol +window.location.host,也可以理解为“Domains, protocols and ports must match”。
<!--more-->

以上抄自cnblog.
 

正文:

本文作者在使用百度Ueditor时,
由于加载js时使用的是二级域名.
如果只是加载Js当然没有问题,
但是ue点击图片或者上传图片会在页面生成一个iframe......
额,这时候chrome的console会告诉你,跨域了.
 
先解释下什么叫主域名(顶级域名)
www.liuhuawei.com
liuhuawei.com 便是顶级域名
www.liuhuawei.com 二级域名.
解决方案,在需要解决跨域的顶部,声明共有的顶级域名.
[java]document.domain = 'a.com';[/java]

 PHP设置

[php]
header('Access-Control-Allow-Origin: http://yunjuzhu.com'); //设置http://www.baidu.com允许跨域访问
header('Access-Control-Allow-Headers: X-Requested-With,X_Requested_With'); //设置允许的跨域header
[/php]
这里需要注意的是.'Access-Control-Allow-Origin':这里是来源地址.
比如从a.com请求到b.com ,那么b.com页面需要写上'Access-Control-Allow-Origin':a.com
如果你不知道怎么写,打开调试工具,抓请求,找到请求头下的Origin,
后面的地址即是.
不过当我想在被调用js里面使用调用页面的window全局变量,就会获取不到,
不能实现同步更新,因为本地和线上域名不一致,只能委屈本地,不支持线上了

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注