js设置document.domain实现跨域的注意点分析


Posted in Javascript onMay 21, 2015

本文实例分析了js设置document.domain实现跨域的注意点。分享给大家供大家参考。具体分析如下:

document.domain
用来得到当前网页的域名。
比如在地址栏里输入:

javascript:alert(document.domain); //3water.com

我们也可以给document.domain属性赋值,不过是有限制的,你只能赋成当前的域名或者基础域名。
比如:

javascript:alert(document.domain = "3water.com"); //3water.com

javascript:alert(document.domain = "3water.com"); //3water.com

上面的赋值都是成功的,因为3water.com是当前的域名,而3water.com是基础域名。

但是下面的赋值就会出来"参数无效"的错误:

javascript:alert(document.domain = "cctv.net"); //参数无效

javascript:alert(document.domain = "3water.com"); //参数无效

因为cctv.net与3water.com不是当前的域名也不是当前域名的基础域名,所以会有错误出现。
这是为了防止有人恶意修改document.domain来实现跨域偷取数据。

利用document.domain 实现跨域:

前提条件:这两个域名必须属于同一个基础域名!而且所用的协议,端口都要一致,否则无法利用document.domain进行跨域

Javascript出于对安全性的考虑,而禁止两个或者多个不同域的页面进行互相操作。
相同域的页面在相互操作的时候不会有任何问题。

比如在:aaa.com的一个网页(a.html)里面 利用iframe引入了一个bbb.com里的一个网页(b.html)。
这时在a.html里面可以看到b.html里的内容,但是却不能利用javascript来操作它。因为这两个页面属于不同的域,在操作之前,js会检测两个页面的域是否相等,如果相等,就允许其操作,如果不相等,就会拒绝操作。
这里不可能把a.html与b.html利用JS改成同一个域的。因为它们的基础域名不相等。(强制用JS将它们改成相等的域的话会报跟上面一样的"参数无效错误。")

所以如果在a.html里引入aaa.com里的另一个网页,是不会有这个问题的,因为域相等。

有另一种情况,两个子域名:

aaa.xxx.com
bbb.xxx.com

aaa里的一个网页(a.html)引入了bbb 里的一个网页(b.html),
这时a.html里同样是不能操作b.html里面的内容的。
因为document.domain不一样,一个是aaa.xxx.com,另一个是bbb.xxx.com。

这时我们就可以通过Javascript,将两个页面的domain改成一样的,
需要在a.html里与b.html里都加入:

document.domain = "xxx.com";

这样这两个页面就可以互相操作了。也就是实现了同一基础域名之间的"跨域"。

希望本文所述对大家的javascript程序设计有所帮助。

Javascript 相关文章推荐
Javascript 获取链接(url)参数的方法
Feb 15 Javascript
select 控制网页内容隐藏于显示的实现代码
May 25 Javascript
js实现单一html页面两套css切换代码
Apr 11 Javascript
JS实现列表的响应式排版(推荐)
Sep 01 Javascript
js改变html的原有内容实现方法
Oct 05 Javascript
Bootstrap BootstrapDialog使用详解
Feb 17 Javascript
jQuery动态追加页面数据以及事件委托详解
May 06 jQuery
jQuery Autocomplete简介_动力节点Java学院整理
Jul 17 jQuery
学习React中ref的两个demo示例
Aug 14 Javascript
Vue通过ref父子组件拿值方法
Sep 12 Javascript
基于jquery实现的tab选项卡功能示例【附源码下载】
Jun 10 jQuery
vue+elementui 实现新增和修改共用一个弹框的完整代码
Jun 08 Vue.js
jQuery+ajax实现无刷新级联菜单示例
May 21 #Javascript
jQuery插件expander实现图片翻转特效
May 21 #Javascript
简单分析javascript面向对象与原型
May 21 #Javascript
jQuery获取上传文件的名称的正则表达式
May 21 #Javascript
js兼容火狐获取图片宽和高的方法
May 21 #Javascript
js兼容火狐显示上传图片预览效果的方法
May 21 #Javascript
javascript去除空格方法小结
May 21 #Javascript
You might like
phpmyadmin中配置文件现在需要绝密的短语密码的解决方法
2007/02/11 PHP
php显示时间常用方法小结
2015/06/05 PHP
Zend Framework入门教程之Zend_Registry组件用法详解
2016/12/09 PHP
推荐30个新鲜出炉的精美 jQuery 效果
2012/03/26 Javascript
JavaScript图片放大技术(放大镜)实现代码分享
2013/11/14 Javascript
jquery.post用法之type设置问题
2014/02/24 Javascript
javascript 获取元素样式必杀技
2014/05/04 Javascript
在页面加载完成后通过jquery给多个span赋值
2014/05/21 Javascript
js实现正方形颜色从下往上升的效果
2014/08/04 Javascript
Javascript中实现trim()函数的两种方法
2015/02/04 Javascript
Vue 拦截器对token过期处理方法
2018/01/23 Javascript
vue操作动画的记录animate.css实例代码
2019/04/26 Javascript
vue-cli history模式实现tomcat部署报404的解决方式
2019/09/06 Javascript
layui插件表单验证提交触发提交的例子
2019/09/09 Javascript
JS实现水平移动与垂直移动动画
2019/12/19 Javascript
vue实现图片按比例缩放问题操作
2020/08/11 Javascript
跟老齐学Python之坑爹的字符编码
2014/09/28 Python
Python变量和字符串详解
2017/04/29 Python
Django自定义认证方式用法示例
2017/06/23 Python
python方法生成txt标签文件的实例代码
2018/05/10 Python
pthon贪吃蛇游戏详细代码
2019/01/27 Python
Django认证系统实现的web页面实现代码
2019/08/12 Python
基于python计算并显示日间、星期客流高峰
2020/05/07 Python
Python如何实现大型数组运算(使用NumPy)
2020/07/24 Python
django数据模型中null和blank的区别说明
2020/09/02 Python
python 利用panda 实现列联表(交叉表)
2021/02/06 Python
全球酒店比价网:HotelsCombined
2017/06/20 全球购物
Paper Cape官网:美国婴儿和儿童服装品牌
2019/11/02 全球购物
房屋改造计划书
2014/01/10 职场文书
公司授权委托书
2014/04/04 职场文书
四群教育工作总结
2015/08/10 职场文书
2016入党积极分子心得体会
2016/01/06 职场文书
React 高阶组件HOC用法归纳
2021/06/13 Javascript
python之django路由和视图案例教程
2021/07/26 Python
排查并解决Oracle sysaux表空间异常增长
2022/04/20 Oracle
面试官问我Mysql的存储引擎了解多少
2022/08/05 MySQL