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 强制类型转换函数
May 17 Javascript
Mootools 1.2教程 滚动条(Slider)
Sep 15 Javascript
div模拟选择框示例代码
Nov 03 Javascript
精通JavaScript的this关键字
May 28 Javascript
jQuery中通过ajax的get()函数读取页面的方法
Feb 29 Javascript
AngularJs表单校验功能实例代码
Feb 09 Javascript
JavaScript数据结构之二叉树的遍历算法示例
Apr 13 Javascript
为什么要使用Vuex的介绍
Jan 19 Javascript
JS双向链表实现与使用方法示例(增加一个previous属性实现)
Jan 31 Javascript
js实现类似iphone的网页滑屏解锁功能示例【附源码下载】
Jun 10 Javascript
微信小程序实现轨迹回放的示例代码
Dec 13 Javascript
js实现抽奖功能
Nov 24 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
综合图片计数器
2006/10/09 PHP
php程序之die调试法 快速解决错误
2009/09/17 PHP
微博短链接算法php版本实现代码
2012/09/15 PHP
php如何调用webservice应用介绍
2012/11/24 PHP
PHP父类调用子类方法的代码例子
2014/04/09 PHP
判断、添加和删除WordPress置顶文章的相关PHP函数小结
2015/12/10 PHP
PHP框架laravel的.env文件配置教程
2017/06/07 PHP
最新优化收藏到网摘代码(digg,diigo)
2007/02/07 Javascript
jQuery中的bind绑定事件与文本框改变事件的临时解决方法
2010/08/13 Javascript
jQuery阻止冒泡和HTML默认操作
2010/11/17 Javascript
用Javascript实现Windows任务管理器的代码
2012/03/27 Javascript
基于jQuery实现下拉收缩(展开与折叠)特效
2012/12/25 Javascript
浅谈JavaScript之事件绑定
2013/07/08 Javascript
用js读、写、删除Cookie代码续篇
2014/12/03 Javascript
js鼠标点击图片切换效果代码分享
2015/08/26 Javascript
React-router 4 按需加载的实现方式及原理详解
2017/05/25 Javascript
jQuery与vue实现拖动验证码功能
2018/01/30 jQuery
JavaScript设计模式之构造器模式(生成器模式)定义与用法实例分析
2018/07/26 Javascript
使用mpvue搭建一个初始小程序及项目配置方法
2018/12/03 Javascript
JS eval代码快速解密实例解析
2020/04/23 Javascript
JavaScript中变量提升和函数提升的详解
2020/08/07 Javascript
[02:12]DOTA2英雄基础教程 变体精灵
2013/12/16 DOTA
浅谈配置OpenCV3 + Python3的简易方法(macOS)
2018/04/02 Python
对Python中数组的几种使用方法总结
2018/06/28 Python
python3实现字符串的全排列的方法(无重复字符)
2018/07/07 Python
美国杂志订阅折扣与优惠网站:Magazines.com
2016/08/31 全球购物
韩国11街:11STREET
2018/03/27 全球购物
北承题目(C++)
2012/05/16 面试题
Java Servlet API中forward() 与redirect()的区别
2014/04/20 面试题
幼儿园安全生产月活动总结
2014/07/05 职场文书
政府班子四风问题整改措施思想汇报
2014/10/08 职场文书
2014年党的群众路线整改措施思想汇报
2014/10/12 职场文书
个人培训总结
2015/03/05 职场文书
2015年煤矿工作总结
2015/04/28 职场文书
幼儿园托班开学寄语(2016秋季)
2015/12/03 职场文书
600字作文之感受大自然
2019/11/27 职场文书