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画图之画切线
Jan 12 Javascript
JavaScript实现的链表数据结构实例
Apr 02 Javascript
Javascript中的几种继承方式对比分析
Mar 22 Javascript
bootstrap模态框跳转到当前模板页面 框消失了而背景存在问题的解决方法
Nov 30 Javascript
js实现简单的选项卡效果
Feb 23 Javascript
JS字符串统计操作示例【遍历,截取,输出,计算】
Mar 27 Javascript
微信小程序 request接口的封装实例代码
Apr 26 Javascript
node.js中grunt和gulp的区别详解
Jul 17 Javascript
9102年webpack4搭建vue项目的方法步骤
Feb 20 Javascript
Swiper.js实现移动端元素左右滑动
Sep 08 Javascript
js+canvas实现两张图片合并成一张图片的方法
Nov 01 Javascript
React服务端渲染原理解析与实践
Mar 04 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
星际初学者游戏中永远要做的事
2020/03/04 星际争霸
虫族 Zerg 魔法科技
2020/03/14 星际争霸
php中利用explode函数分割字符串到数组
2014/02/08 PHP
Ubuntu中支持PHP5与PHP7双版本的简单实现
2018/08/19 PHP
Yii2框架操作数据库的方法分析【以mysql为例】
2019/05/27 PHP
让FireFox支持innerText的实现代码
2009/12/01 Javascript
jquery ready()的几种实现方法小结
2010/06/18 Javascript
js对图片base64编码字符串进行解码并输出图像示例
2014/03/17 Javascript
将form表单中的元素转换成对象的方法适用表单提交
2014/05/02 Javascript
javascript实现全角与半角字符的转换
2015/01/07 Javascript
jQuery实现平滑滚动到指定锚点的方法
2015/03/20 Javascript
jQuery+ajax实现滚动到页面底部自动加载图文列表效果(类似图片懒加载)
2016/06/07 Javascript
Node.js的基本知识简单汇总
2016/09/19 Javascript
JS用斜率判断鼠标进入DIV四个方向的方法
2016/11/07 Javascript
jQuery制作图片旋转效果
2017/02/02 Javascript
[js高手之路]原型式继承与寄生式继承详解
2017/08/28 Javascript
React全家桶环境搭建过程详解
2018/05/18 Javascript
vue+SSM实现验证码功能
2018/12/07 Javascript
NVM安装nodejs的方法实用步骤
2019/01/16 NodeJs
Vue组件系列开发之模态框
2019/04/18 Javascript
解决前后端分离 vue+springboot 跨域 session+cookie失效问题
2019/05/13 Javascript
浅析TypeScript 命名空间
2020/03/19 Javascript
基于javascript处理nginx请求过程详解
2020/07/07 Javascript
详解JavaScript作用域 闭包
2020/07/29 Javascript
[01:29:46]DOTA2上海特级锦标赛C组资格赛#1 OG VS LGD第二局
2016/02/27 DOTA
讲解Python中的递归函数
2015/04/27 Python
Python的Django框架下管理站点的基本方法
2015/07/17 Python
python看某个模块的版本方法
2018/10/16 Python
在Pycharm中使用GitHub的方法步骤
2019/06/13 Python
JackJones官方旗舰店:杰克琼斯男装
2018/03/27 全球购物
业务助理岗位职责
2013/11/18 职场文书
超市优秀员工获奖感言
2014/08/15 职场文书
放飞梦想演讲稿600字
2014/08/26 职场文书
南京市纪委监察局整改方案
2014/09/16 职场文书
个人党性分析总结
2015/03/05 职场文书
画错魏国疆域啦!《派对咖孔明》动画因作画失误于官网致歉
2022/04/07 日漫