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实现浏览器菜单命令
Sep 05 Javascript
杨氏矩阵查找的JS代码
Mar 21 Javascript
Javascript页面添加到收藏夹的简单方法
Aug 07 Javascript
jQuery中text() val()和html()的区别实例详解
Jun 28 Javascript
jQuery+json实现动态创建复杂表格table的方法
Oct 25 Javascript
微信小程序 template模板详解及实例
Feb 21 Javascript
COM组件中调用JavaScript函数详解及实例
Feb 23 Javascript
VUE中的无限循环代码解析
Sep 22 Javascript
从零开始实现Vue简单的Toast插件
Dec 03 Javascript
three.js实现炫酷的全景3D重力感应
Dec 30 Javascript
JavaScript中十种一步拷贝数组的方法实例详解
Apr 22 Javascript
原生js实现trigger方法示例代码
May 22 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
经典的星际争霸,满是回忆的BGM
2020/04/09 星际争霸
php 无法载入mysql扩展
2010/03/12 PHP
PHP YII框架开发小技巧之模型(models)中rules自定义验证规则
2015/11/16 PHP
Windows2003下php5.4安装配置教程(IIS)
2016/06/30 PHP
PHP设计模式之适配器模式原理与用法分析
2018/04/25 PHP
php获取微信openid方法总结
2019/10/10 PHP
jscript之Read an Excel Spreadsheet
2007/06/13 Javascript
JQuery加载图片自适应固定大小的DIV
2013/09/12 Javascript
js对象内部访问this修饰的成员函数示例
2014/04/27 Javascript
js多个物体运动功能实例分析
2016/12/20 Javascript
jQuery的中 is(':visible') 解析及用法(必看)
2017/02/12 Javascript
详解vue中使用express+fetch获取本地json文件
2017/10/10 Javascript
详解Vue如何支持JSX语法
2017/11/10 Javascript
使用命令行工具npm新创建一个vue项目的方法
2017/12/27 Javascript
关于ligerui子页面关闭后,父页面刷新,重新加载的方法
2019/09/27 Javascript
[05:49]DOTA2-DPC中国联赛 正赛 Elephant vs LBZS 选手采访
2021/03/11 DOTA
使用Python的Flask框架表单插件Flask-WTF实现Web登录验证
2016/07/12 Python
python urllib urlopen()对象方法/代理的补充说明
2017/06/29 Python
Python matplotlib 画图窗口显示到gui或者控制台的实例
2018/05/24 Python
详解pyppeteer(python版puppeteer)基本使用
2019/06/12 Python
Pytorch Tensor的统计属性实例讲解
2019/12/30 Python
详解HTML5 data-* 自定义属性
2018/01/24 HTML / CSS
Auchan Direct波兰:欧尚在线杂货店
2016/10/19 全球购物
奥地利智能家居和智能生活网上商店:tink.at
2019/10/07 全球购物
意大利运动服减价商店:ScontoSport
2020/03/10 全球购物
文秘专业毕业生就业推荐信
2013/11/08 职场文书
大学生村官演讲稿
2014/04/25 职场文书
微笑服务演讲稿
2014/05/13 职场文书
奥巴马就职演讲稿
2014/05/15 职场文书
淘宝客服工作职责
2014/07/11 职场文书
2014国庆节餐厅促销活动策划方案
2014/09/16 职场文书
领导班子个人对照检查材料(群众路线)
2014/09/26 职场文书
师德师风建设整改措施思想汇报
2014/10/11 职场文书
工作经历证明书范文
2014/11/02 职场文书
党的群众路线教育实践活动学习笔记范文
2014/11/06 职场文书
vue如何在data中引入图片的正确路径
2022/06/05 Vue.js