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 相关文章推荐
List the Stored Procedures in a SQL Server database
Jun 20 Javascript
js wmp操作代码小结(音乐连播功能)
Nov 08 Javascript
20款效果非常棒的 jQuery 插件小结分享
Nov 18 Javascript
jquery怎样实现ajax联动框(一)
Mar 08 Javascript
Shell脚本实现Linux系统和进程资源监控
Mar 05 Javascript
vue轮播图插件vue-awesome-swiper的使用代码实例
Jul 10 Javascript
js实现上传并压缩图片效果
Jan 10 Javascript
vue对storejs获取的数据进行处理时遇到的几种问题小结
Mar 20 Javascript
JavaScript事件对象深入详解
Dec 30 Javascript
Vue 请求传公共参数的操作
Jul 31 Javascript
ant design vue嵌套表格及表格内部编辑的用法说明
Oct 28 Javascript
vue 给数组添加新对象并赋值
Apr 20 Vue.js
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
注意:php5.4删除了session_unregister函数
2013/08/05 PHP
从零开始学YII2框架(三)扩展插件yii2-gird
2014/08/20 PHP
如何让CI框架支持service层
2014/10/29 PHP
php 字符串中是否包含指定字符串的多种方法
2018/04/12 PHP
基于laravel缓冲cache的用法详解
2019/10/23 PHP
PHP常用字符串函数用法实例总结
2020/06/04 PHP
基于jquery的图片的切换(以数字的形式)
2011/02/14 Javascript
用js设置下拉框为只读的小技巧
2014/04/10 Javascript
JS小数运算出现多为小数问题的解决方法
2016/06/02 Javascript
基于MVC5和Bootstrap的jQuery TreeView树形控件(二)之数据支持json字符串、list集合
2016/08/11 Javascript
canvas实现动态小球重叠效果
2017/02/06 Javascript
JS库 Highlightjs 添加代码行号的实现代码
2017/09/13 Javascript
React Native之prop-types进行属性确认详解
2017/12/19 Javascript
JS实现数组简单去重及数组根据对象中的元素去重操作示例
2018/01/05 Javascript
Element输入框带历史查询记录的实现示例
2019/01/15 Javascript
怎么使用javascript深度拷贝一个数组
2019/06/06 Javascript
Node.JS枚举统计当前文件夹和子目录下所有代码文件行数
2019/08/23 Javascript
浅谈JS for循环中使用break和continue的区别
2020/07/21 Javascript
[01:38]【DOTA2亚洲邀请赛】Sumail——梦开始的地方
2017/03/03 DOTA
在Python中使用dict和set方法的教程
2015/04/27 Python
Python3.6通过自带的urllib通过get或post方法请求url的实例
2018/05/10 Python
提升python处理速度原理及方法实例
2019/12/25 Python
python+Selenium自动化测试——输入,点击操作
2020/03/06 Python
利用python生成照片墙的示例代码
2020/04/09 Python
Python自动化xpath实现自动抢票抢货
2020/09/19 Python
美国珠宝精品店:Opulent Jewelers
2019/08/20 全球购物
医学院学生求职简历的自我评价
2013/10/24 职场文书
家长对孩子评语
2014/01/30 职场文书
四年级数学教学反思
2014/02/02 职场文书
雷锋精神演讲稿
2014/05/13 职场文书
2014年科室工作总结范文
2014/12/19 职场文书
3.15消费者权益日活动总结
2015/02/09 职场文书
2015年社区平安建设工作总结
2015/05/13 职场文书
2016机关干部作风建设心得体会
2016/01/21 职场文书
《实心球》教学反思
2016/02/23 职场文书
导游词之贵州百里杜鹃
2019/10/29 职场文书