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 相关文章推荐
javawscript 三级菜单的实现原理
Jul 01 Javascript
jQuery prev ~ siblings选择器使用介绍
Aug 09 Javascript
浅谈JavaScript中定义变量时有无var声明的区别
Aug 18 Javascript
JS中call/apply、arguments、undefined/null方法详解
Feb 15 Javascript
JavaScript代码因逗号不规范导致IE不兼容的问题
Feb 25 Javascript
JavaScript中的Array 对象(数组对象)
Jun 02 Javascript
Javascript同时声明一连串(多个)变量的方法
Jan 23 Javascript
jQuery中的on与bind绑定事件区别实例详解
Feb 28 Javascript
JS实现页面打印功能
Mar 16 Javascript
Javascript将图片的绝对路径转换为base64编码的方法
Jan 11 Javascript
angularJS的radio实现单项二选一的使用方法
Feb 28 Javascript
vue生命周期和react生命周期对比【推荐】
Sep 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
php的一个简单加密解密代码
2014/01/14 PHP
PHP中对数组的一些常用的增、删、插操作函数总结
2015/11/27 PHP
php 替换文章中的图片路径,下载图片到本地服务器的方法
2018/02/06 PHP
JavaScript replace(rgExp,fn)正则替换的用法
2010/03/04 Javascript
javascript的console.log()用法小结
2012/05/31 Javascript
JavaScript中的ParseInt("08")和“09”返回0的原因分析及解决办法
2016/05/19 Javascript
AngularJS基础 ng-class-odd 指令示例
2016/08/01 Javascript
详解vue.js的devtools安装
2017/05/26 Javascript
简单实现js轮播图效果
2017/07/14 Javascript
AngularJS中使用three.js的实例详解
2017/07/21 Javascript
详解vue-router 路由元信息
2017/09/13 Javascript
node实现登录图片验证码的示例代码
2018/04/20 Javascript
对angular2中的ngfor和ngif指令嵌套实例讲解
2018/09/12 Javascript
浅谈针对Vue相同路由不同参数的刷新问题
2018/09/29 Javascript
JS document对象简单用法完整示例
2020/01/14 Javascript
CKEditor扩展插件:自动排版功能autoformat插件实现方法详解
2020/02/06 Javascript
JSONP 的原理、理解 与 实例分析
2020/05/16 Javascript
Vue.js中使用Vuex实现组件数据共享案例
2020/07/31 Javascript
JavaScript如何实现防止重复的网络请求的示例
2021/01/28 Javascript
Python 冒泡,选择,插入排序使用实例
2015/02/05 Python
小小聊天室Python代码实现
2016/08/17 Python
对python numpy数组中冒号的使用方法详解
2018/04/17 Python
Python处理菜单消息操作示例【基于win32ui模块】
2018/05/09 Python
浅析Python函数式编程
2018/10/06 Python
在python Numpy中求向量和矩阵的范数实例
2019/08/26 Python
Python中的 ansible 动态Inventory 脚本
2020/01/19 Python
python如何进行矩阵运算
2020/06/05 Python
Python字符串及文本模式方法详解
2020/09/10 Python
详解HTML5 Canvas绘制不规则图形时的非零环绕原则
2016/03/21 HTML / CSS
英国水族馆和池塘用品购物网站:Warehouse Aquatics
2019/08/29 全球购物
意大利中国电子产品购物网站:Geekmall.com
2019/09/30 全球购物
介绍一下SOA和SOA的基本特征
2016/02/24 面试题
销售内勤岗位职责范本
2015/04/13 职场文书
立春观后感
2015/06/18 职场文书
高端收音机+蓝牙音箱,JBL TUNER FM带收音蓝牙音箱评测
2021/04/24 无线电
Python实现视频中添加音频工具详解
2021/12/06 Python