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 相关文章推荐
js 实现菜单上下显示附效果图
Nov 21 Javascript
javascript中全局对象的parseInt()方法使用介绍
Dec 19 Javascript
javascript回车完美实现tab切换功能
Mar 13 Javascript
详细解读AngularJS中的表单验证编程
Jun 19 Javascript
javascript动态获取登录时间和在线时长
Feb 25 Javascript
把json格式的字符串转换成javascript对象或数组的方法总结
Nov 03 Javascript
详解Vue中的scoped及穿透方法
Apr 18 Javascript
Vue+Express实现登录状态权限验证的示例代码
May 05 Javascript
Vue数据绑定简析小结
May 07 Javascript
微信小程序文章列表功能完整实例
Jun 03 Javascript
vue使用screenfull插件实现全屏功能
Sep 17 Javascript
Nest.js环境变量配置与序列化详解
Feb 21 Javascript
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
PHP开发大型项目的一点经验
2006/10/09 PHP
福利彩票幸运号码自动生成器
2006/10/09 PHP
投票管理程序
2006/10/09 PHP
PHP 巧用数组降低程序的时间复杂度
2010/01/01 PHP
php设计模式 Factory(工厂模式)
2011/06/26 PHP
php插件Xajax使用方法详解
2017/08/31 PHP
JavaScript中SQL语句的应用实现
2010/05/04 Javascript
js history对象简单实现返回和前进
2013/10/30 Javascript
JS取得绝对路径的实现代码
2015/01/16 Javascript
Javascript实现的Map集合工具类完整实例
2015/07/31 Javascript
jQuery+HTML5实现图片上传前预览效果
2015/08/20 Javascript
基于javascript实现彩票随机数生成(升级版)
2020/04/17 Javascript
Angularjs修改密码的实例代码
2017/05/26 Javascript
js移动端事件基础及常用事件库详解
2017/08/15 Javascript
vue实现搜索功能
2019/05/28 Javascript
JS计算斐波拉切代码实例
2019/09/12 Javascript
node.js使用zlib模块进行数据压缩和解压操作示例
2020/02/12 Javascript
微信小程序获取公众号文章列表及显示文章的示例代码
2020/03/10 Javascript
[46:47]2014 DOTA2国际邀请赛中国区预选赛5.21 LGD-CDEC VS NE
2014/05/22 DOTA
python动态监控日志内容的示例
2014/02/16 Python
python格式化字符串实例总结
2014/09/28 Python
python使用cStringIO实现临时内存文件访问的方法
2015/03/26 Python
python实现决策树分类算法
2017/12/21 Python
python爬取个性签名的方法
2018/06/17 Python
关于jupyter打开之后不能直接跳转到浏览器的解决方式
2020/04/13 Python
英国领先的露营和露营车品牌之一:OLPRO
2019/08/06 全球购物
会计自我鉴定范文
2013/10/06 职场文书
生态学毕业生自荐信
2013/10/27 职场文书
英语专业学生的自我评价
2013/12/30 职场文书
蛋糕店的商业计划书范文
2014/01/27 职场文书
乐观自信演讲稿范文
2014/05/21 职场文书
大学学雷锋活动总结
2014/06/26 职场文书
乡镇党的群众路线教育实践活动剖析材料
2014/10/09 职场文书
2015年英语教研组工作总结
2015/05/23 职场文书
小学六年级班主任工作经验交流材料
2015/11/02 职场文书
python 破解加密zip文件的密码
2021/04/22 Python