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,超强推荐share.js
Dec 23 Javascript
JavaScript 页面坐标相关知识整理
Jan 09 Javascript
js限制文本框只能输入数字(正则表达式)
Jul 15 Javascript
解读JavaScript中 For, While与递归的用法
May 07 Javascript
JavaScript实现在页面间传值的方法
Apr 07 Javascript
Knockout自定义绑定创建方法
Dec 26 Javascript
jQuery Password Validation密码验证
Dec 30 Javascript
vue组件表单数据回显验证及提交的实例代码
Aug 30 Javascript
解决vue路由后界面没有变化,但是链接有的问题
Sep 01 Javascript
vue2.0 使用element-ui里的upload组件实现图片预览效果方法
Sep 04 Javascript
详解elementui之el-image-viewer(图片查看器)
Aug 30 Javascript
JavaScript实现简单的图片切换功能(实例代码)
Apr 10 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
浅析Apache中RewriteCond规则参数的详细介绍
2013/06/30 PHP
ThinkPHP V2.2说明文档没有说明的那些事实例小结
2015/07/01 PHP
PHP数组相加操作及与array_merge的区别浅析
2016/11/26 PHP
浅谈laravel中的关联查询with的问题
2019/10/10 PHP
laravel中Redis队列监听中断的分析
2020/09/14 PHP
经常用的图片在容器中的水平垂直居中实例
2007/06/10 Javascript
JMenuTab简单使用说明
2008/03/13 Javascript
js和jquery对dom节点的操作(创建/追加)
2013/04/21 Javascript
js动态添加事件并可传参数示例代码
2013/10/21 Javascript
jquery索引在使用中的一些困惑
2013/10/24 Javascript
jQuery判断checkbox是否选中的3种方法
2014/08/12 Javascript
JS+CSS实现滑动切换tab菜单效果
2015/08/25 Javascript
JQuery日历插件My97DatePicker日期范围限制
2016/01/20 Javascript
浅析Bootstrip的select控件绑定数据的问题
2016/05/10 Javascript
浅谈JS继承_寄生式继承 & 寄生组合式继承
2016/08/16 Javascript
Bootstrap源码学习笔记之bootstrap进度条
2016/12/24 Javascript
JS作用域链详解
2017/06/26 Javascript
JS实现简单获取最近7天和最近3天日期的方法
2018/04/18 Javascript
jquery实现上传文件进度条
2020/03/26 jQuery
javascript实现随机抽奖功能
2020/12/30 Javascript
[02:20]DOTA2亚洲邀请赛 IG战队出场宣传片
2015/02/07 DOTA
python实现根据指定字符截取对应的行的内容方法
2018/10/23 Python
Django 开发环境与生产环境的区分详解
2019/07/26 Python
Python利用requests模块下载图片实例代码
2019/08/12 Python
Python Django框架模板渲染功能示例
2019/11/08 Python
Python实现读取并写入Excel文件过程解析
2020/05/27 Python
定义css设备类型-Media Queries图表简介及使用方法
2013/01/21 HTML / CSS
电力安全事故反思
2014/04/27 职场文书
企业财务经理岗位职责
2015/04/08 职场文书
2015年学校工作总结范文
2015/04/20 职场文书
项目备案申请报告
2015/05/15 职场文书
起诉书范文
2015/05/20 职场文书
Python答题卡识别并给出分数的实现代码
2021/06/22 Python
奥特曼十大神器:奥特手镯在榜,第一是贝利亚的神器
2022/03/18 日漫
Python如何快速找到多个字典中的公共键(key)
2022/04/29 Python
vscode内网访问服务器的方法
2022/06/28 Servers