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保留两位小数使用toFixed实现
Jul 29 Javascript
详解JS函数重载
Dec 04 Javascript
node.js中的buffer.Buffer.isBuffer方法使用说明
Dec 14 Javascript
Javascript基于AJAX回调函数传递参数实例分析
Dec 15 Javascript
jQuery绑定事件监听bind和移除事件监听unbind用法实例详解
Jan 19 Javascript
Vue.js实现简单ToDoList 前期准备(一)
Dec 01 Javascript
bootstrap提示标签、提示框实现代码
Dec 28 Javascript
vue.js template模板的使用(仿饿了么布局)
Aug 13 Javascript
对 Vue-Router 进行单元测试的方法
Nov 05 Javascript
在vue中使用express-mock搭建mock服务的方法
Nov 07 Javascript
Vue运用transition实现过渡动画
May 06 Javascript
seajs和requirejs模块化简单案例分析
Aug 26 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 smarty 二级分类代码和模版循环例子
2011/06/16 PHP
php常用hash加密函数
2014/11/22 PHP
PHP仿qq空间或朋友圈发布动态、评论动态、回复评论、删除动态或评论的功能(上)
2017/05/26 PHP
PHP实现微信模拟登陆并给用户发送消息的方法【文字,图片,图文】
2017/06/29 PHP
Ajax中的JSON格式与php传输过程全面解析
2017/11/14 PHP
php获取ajax的headers方法与内容实例
2017/12/27 PHP
Alliance vs Liquid BO3 第三场2.13
2021/03/10 DOTA
提高 DHTML 页面性能
2006/12/25 Javascript
jquery遍历筛选数组的几种方法和遍历解析json对象
2013/12/13 Javascript
jQuery前端框架easyui使用Dialog时bug处理
2014/12/05 Javascript
bootstrap datetimepicker实现秒钟选择下拉框
2017/01/05 Javascript
基于游标的分页接口实现代码示例
2018/11/12 Javascript
深入浅出了解Node.js Streams
2019/05/27 Javascript
JS错误处理与调试操作实例分析
2020/04/13 Javascript
[02:03]DOTA2亚洲邀请赛 HGT战队出场宣传片
2015/02/07 DOTA
Python入门篇之字典
2014/10/17 Python
动态规划之矩阵连乘问题Python实现方法
2017/11/27 Python
简单了解什么是神经网络
2017/12/23 Python
详谈在flask中使用jsonify和json.dumps的区别
2018/03/26 Python
Python实现基于PIL和tesseract的验证码识别功能示例
2018/07/11 Python
python实现逢七拍腿小游戏的思路详解
2020/05/26 Python
什么是Smarty变量操作符?如何使用Smarty变量操作符
2014/07/18 面试题
如何启动时不需输入用户名与密码
2014/05/09 面试题
中学教师请假制度
2014/02/03 职场文书
幼儿园开学寄语
2014/04/03 职场文书
平安工地建设方案
2014/05/06 职场文书
元旦联欢会策划方案
2014/06/11 职场文书
大学生简历求职信
2014/06/24 职场文书
美术专业自荐信
2014/07/07 职场文书
担保书格式
2015/01/20 职场文书
世界气象日活动总结
2015/02/27 职场文书
2015年组织委员工作总结
2015/04/23 职场文书
2016年大学生就业指导课心得体会
2015/10/09 职场文书
怎样评估创业计划书是否有可行性?
2019/08/07 职场文书
企业转让协议书(范文2篇)
2019/08/15 职场文书
Spring中bean的生命周期之getSingleton方法
2021/06/30 Java/Android