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 数组实现一个类似ruby的迭代器
Oct 27 Javascript
jsp js鼠标移动到指定区域显示选项卡离开时隐藏示例
Jun 14 Javascript
jQuery实现类似淘宝购物车全选状态示例
Jun 26 Javascript
JS页面延迟执行一些方法(整理)
Nov 11 Javascript
Juery解决tablesorter中文排序和字符范围的方法
May 06 Javascript
JavaScript设计模式初探
Jan 07 Javascript
JS中使用FormData上传文件、图片的方法
Aug 07 Javascript
Bootstrap3多级下拉菜单
Feb 24 Javascript
javascript数据结构之串的概念与用法分析
Apr 12 Javascript
Vue中父子组件通讯之todolist组件功能开发
May 21 Javascript
详解Node.js 中使用 ECDSA 签名遇到的坑
Nov 26 Javascript
vue 查看dist文件里的结构(多种方式)
Jan 17 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
Mysql中分页查询的两个解决方法比较
2013/05/02 PHP
Zend Framework动作助手Url用法详解
2016/03/05 PHP
php+jQuery ajax实现的实时刷新显示数据功能示例
2019/09/12 PHP
ThinkPHP5框架中使用JWT的方法示例
2020/06/03 PHP
收藏Javascript中常用的55个经典技巧
2007/08/12 Javascript
javascript 写类方式之五
2009/07/05 Javascript
javascript 最常用的10个自定义函数[推荐]
2009/12/26 Javascript
jQuery EasyUI API 中文文档 - TimeSpinner时间微调器
2011/10/23 Javascript
jquery控制display属性为none或block
2014/03/31 Javascript
jQuery创建DOM元素实例解析
2015/01/19 Javascript
js实现兼容IE和FF的上下层的移动
2015/05/04 Javascript
基于jQuery.Hz2Py.js插件实现的汉字转拼音特效
2015/05/07 Javascript
javascript实现可全选、反选及删除表格的方法
2015/05/15 Javascript
TinyMCE汉化及本地上传图片功能实例详解
2016/05/31 Javascript
AngularJS 视图详解及示例代码
2016/08/17 Javascript
Vue-router结合transition实现app前进后退动画切换效果的实例
2017/10/11 Javascript
Vue-drag-resize 拖拽缩放插件的使用(简单示例)
2019/12/04 Javascript
JS图片预加载三种实现方法解析
2020/05/08 Javascript
Python 命令行参数sys.argv
2008/09/06 Python
Python中的localtime()方法使用详解
2015/05/22 Python
Python的组合模式与责任链模式编程示例
2016/02/02 Python
尝试用最短的Python代码来实现服务器和代理服务器
2016/06/23 Python
详解用TensorFlow实现逻辑回归算法
2018/05/02 Python
python issubclass 和 isinstance函数
2019/07/25 Python
Python魔术方法专题
2020/06/19 Python
python Xpath语法的使用
2020/11/26 Python
整理HTML5移动端开发的常用触摸事件
2016/04/15 HTML / CSS
春节活动策划方案
2014/01/24 职场文书
镇创先争优活动总结
2014/08/28 职场文书
2014年资料员工作总结
2014/11/18 职场文书
2014年村委会工作总结
2014/11/24 职场文书
2016年度基层党建工作公开承诺书
2016/03/25 职场文书
PHP 技巧 * SVG 保存为图片(分享图生成)
2021/04/02 PHP
Java9新特性之Module模块化编程示例演绎
2022/03/16 Java/Android
vue-cli3.0修改打包后的文件名和文件地址,打包后本地运行报错解决
2022/04/06 Vue.js
使用Bandicam录制鼠标指针并附带点击声音,还可以添加点击动画效果
2022/04/11 数码科技