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 String 对象
Apr 25 Javascript
一些技巧性实用js代码小结
Oct 14 Javascript
JavaScript对象属性检查、增加、删除、访问操作实例
Jul 08 Javascript
js实现的黑背景灰色二级导航菜单效果代码
Aug 24 Javascript
JavaScript学习小结(一)——JavaScript入门基础
Sep 02 Javascript
React Native实现简单的登录功能(推荐)
Sep 19 Javascript
详解angularjs中的隔离作用域理解以及绑定策略
May 31 Javascript
基于Bootstrap模态对话框只加载一次 remote 数据的解决方法
Jul 09 Javascript
vue+element实现批量删除功能的示例
Feb 28 Javascript
完美解决axios在ie下的兼容性问题
Mar 05 Javascript
layer弹出层 iframe层去掉滚动条的实例代码
Aug 17 Javascript
浅谈vue加载优化策略
Mar 19 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
如何使用Linux的Crontab定时执行PHP脚本的方法
2011/12/19 PHP
9个经典的PHP代码片段分享
2014/12/18 PHP
php微信公众平台开发之微信群发信息
2016/09/13 PHP
利用PHP实现开心消消乐的算法示例
2017/10/12 PHP
ArrayList类(增强版)
2007/04/04 Javascript
zShowBox 图片放大展示jquery版 兼容性
2011/09/24 Javascript
Jquery网页出现的乱码问题的三种解决方法
2013/06/30 Javascript
使用node.js半年来总结的 10 条经验
2014/08/18 Javascript
Bootstrapvalidator校验、校验清除重置的实现代码(推荐)
2016/09/28 Javascript
JavaScript仿百度图片浏览效果
2016/11/23 Javascript
JavaScript中${pageContext.request.contextPath}取值问题及解决方案
2016/12/08 Javascript
ES6下React组件的写法示例代码
2017/05/04 Javascript
vue综合组件间的通信详解
2017/11/06 Javascript
angular1.x ui-route传参的三种写法小结
2018/08/31 Javascript
JavaScript 点击触发复制功能实例详解
2018/11/02 Javascript
JS三级联动代码格式实例详解
2019/12/30 Javascript
JavaScript代码压缩工具UglifyJS和Google Closure Compiler的基本用法
2020/04/13 Javascript
Python字典操作详细介绍及字典内建方法分享
2018/01/04 Python
python3个性签名设计实现代码
2018/06/19 Python
python如何实现一个刷网页小程序
2018/11/27 Python
python实现祝福弹窗效果
2019/04/07 Python
Python替换月份为英文缩写的实现方法
2019/07/15 Python
python爬虫 Pyppeteer使用方法解析
2019/09/28 Python
基于pytorch padding=SAME的解决方式
2020/02/18 Python
高三自我鉴定
2013/10/23 职场文书
测绘工程系学生的自我评价
2013/11/30 职场文书
银行实习鉴定
2013/12/13 职场文书
六十大寿答谢词
2014/01/12 职场文书
写自荐信的注意事项
2014/03/09 职场文书
市政管理求职信范文
2014/05/07 职场文书
2014年法院个人工作总结
2014/12/17 职场文书
小学教师暑期培训心得体会
2016/01/09 职场文书
python爬虫之利用selenium模块自动登录CSDN
2021/04/22 Python
html5表单的required属性使用
2021/07/07 HTML / CSS
Java实现给Word文件添加文字水印
2022/02/15 Java/Android
MySQL事务操作的四大特性以及并发事务问题
2022/04/12 MySQL