`

js提示“没有权限”的问题(转载)

阅读更多
当某个互联网运营商的网站上规模之后,他们都会考虑将网站部署到主域名相同,子域名不同的服务器集群上,以此来构建一个聚合的应用。

同时,希望能够利用 JavaScript,在不同子域的网页间相互操作,实现一个对用户来说“无缝”的应用。这时,跨域操作的技术难点,仿佛一下子从服务器后台,转移到了浏览器前台。因为,浏览器将承载跨子域访问的任务。为什么会这么说呢?因为,我们已经步入了集成化的 RIA 时代。

一般情况下,通过运用 DOM 对象模型,不同窗口和框架里的内容可以通过JavaScript 互相作用。

但是,由于浏览器可以同时在窗口或框架中显示不同的页面,甚至是不同域下的页面。为了保证数据的完整性和信息的安全性,就必须建立起一种强制规则,来保证跨域的数据不会被非法的获取和修改。

多数情况下,只有相同域下的页面才能相互作用。比如,一个位于www.microsoft.com域下的页面,可以自由地通过 JavaScript 读写www.microsoft.com域下的其它页面,但却不能读写 home.microsoft.com 域下的页面,或是www.google.com域下的页面。完全的跨域访问(比如,www.microsoft.com域下的页面访问www.google.com域下的页面),在 JavaScript 开发中是被完全禁止的,没有任何商量的余地。但是,DOM 为 document 对象提供了一个 domain 属性,可以授权“同主域但不同子域”页面间的数据访问,这正好可以应付那些“集团军”式的前台部署。

跨子域设置的规则:当两个二级域名,URL 协议,端口都相同的网页,自身都通过 JavaScript 显示地设置了相同的 document.domain 值,并且此值至少等于自身的二级域名,它们之间才可以相互作用。(注意,此规则只适用大于二级域名的页面,并且千万别指望 http 页面可以与 https 页面相互作用。)

也就是说,当网页作者指定 document.domain 属性为域名的后半部分时,读写许可将扩展至二级域名。例如:http://www.microsoft.com下的某个页面,将 document.domain 属性设置成 microsoft.com,同时http://home.microsoft.com下的某个页面,也将 document.domain 属性设置成 microsoft.com,它们之间即可完成跨子域的访问。因为,只有以 microsoft.com 结尾的站点上的文档,才可能将其 document.domain 属性设置为 microsoft.com,这样就确保了同一个服务提供者的页面,才能互相提供权限,从而完成交互操作。

注意,document.domain 属性值不能比二级域名更短(比如“com”,浏览器将禁止这种设置,并认为此操作是无效的)。但是,对于如www.microsoft.co.jp这样的域名,实际的最大操作权限应该是二级域名 microsoft.co.jp(而不是一级域名“co.jp”,浏览器不会像限制“com”那样,将“co.jp”认为是无效的。但如果你真这样做了,带来的风险可想而知)。

在窗口、对话框、框架(frameset,frame,iframe),甚至是 IE 的 popup 窗口之间(通过 IE 特有的 window.createPopup 方法创建),只要它们涉及到了相互读写,都要考虑 document.domain 问题。这仿佛是“一损俱损,一荣俱荣”的事情,一旦你在某个地方设置了 document.domain,你必须小心应对。因为,你不知道在哪个角落里,会出现“没有权限”的脚本错误。

让窗口或框架在不同域页面之间跳转,是件很寻常的事情,所以跳转操作总是被允许的。只有试图读写(注意此处是读和写)页面内容时,才会受到 domain 限制。例如:window.location 可以用来设置地址间的跳转,但是不能用它来读取在不同域下的地址。因为,这会使一个页面知道浏览者去过哪些地方,而这会暴露浏览者的隐私。

在不同域间的页面制约包括

引用
window.location 可以设置,但不能读取。其它的 location 属性和方法被禁止访问;
document.href 可以设置,但不能读取。其它的 document 属性和方法被禁止访问;
<iframe> 的 src 可以设置,但不能读取;

浏览器为什么要加入跨域限制?
浏览器的跨域网页限制,是出于安全角度考虑的,为什么会这么说呢?请想像一下,如果没有域之间的安全限制,一个无赖网页可以“偷窥”别人浏览的页面,然后通过 Ajax 方式,将“偷窥”后的数据发送到某台不为人知的服务器上,它便实现了无耻的侵略行为。
再或者,这个无赖网页可以通过 DHTML 来更改别人页面的内容。比如:编写一个监视脚本,把用户已经打开的所有页面改换背景色,版权文字,以及放入一些自制的 banner,这样就可以把别人的整个站点变成“自己的”了。
分享到:
评论

相关推荐

    App权限判断和提示(permission.js)

    App权限判断和提示

    js提示框特效js提示框特效js提示框特效js提示框特效

    JavaScript提示框特效是一种常见的网页交互元素,用于向用户显示信息、警告或确认操作。在网页开发中,我们经常需要自定义这些提示框以提供更好的用户体验。传统的JavaScript提示框包括`alert()`, `prompt()`, 和 `...

    javascript实现的圆角提示框

    在JavaScript和CSS技术的支持下,我们可以创建一个具有圆角的提示框,这通常被称为"tooltip"。这个提示框不仅能够显示必要的信息,还能通过自定义样式来增强用户体验。以下是对这个话题的详细解释: 首先,我们需要...

    maptree一个支持多级用户权限树js插件

    **maptree:多级用户权限树JS插件详解** `maptree` 是一款专为JavaScript开发者设计的插件,主要用于构建具有多级用户权限的树形结构。在Web应用程序中,尤其是在权限管理复杂的系统中,这样的插件尤其有用,因为它...

    js-input输入框提示语

    在没有输入任何内容时,提示语会淡显地显示在输入框内,一旦用户开始输入,提示语就会消失。本文将深入探讨如何在JavaScript中处理`input`输入框的提示语。 1. HTML中的`placeholder`属性: 在HTML中,为`input`...

    非常漂亮的JS提示框

    在这个“非常漂亮的JS提示框”主题中,我们主要探讨的是如何利用JS实现一个既美观又实用的提示框,并解决在不同浏览器中,特别是IE6中的兼容性问题。 提示框是用户界面中常见的一种元素,通常用于显示警告、确认...

    js 提示框插件鼠标滑过提示文章内容信息

    JavaScript提示框插件是一种常用的网页交互元素,它能够在鼠标悬停在特定元素上时,以弹出的小窗口显示额外的信息。这种插件通常被称为“tooltips”,它可以帮助用户了解页面上某些元素的具体含义或详细内容,而无需...

    js提示框-转载+++ js 乱码+++自动提交+滚动图片加载+箭头导航(转载)

    【标题】中的“js提示框-转载+++ js 乱码+++自动提交+滚动图片加载+箭头导航(转载)”揭示了几个重要的JavaScript编程知识点,主要包括以下几个方面: 1. **JavaScript 提示框**: JavaScript 提示框是浏览器内置的...

    auto.js vscode编写代码提示提示,离线安装

    总的来说,这个主题涵盖了使用VSCode进行JavaScript开发,特别是针对auto.js的定制化开发环境的构建,以及如何在无网络条件下安装和利用代码提示插件和代码片段来优化编码体验。通过理解和应用这些知识点,开发者...

    漂亮的js提示信息效果

    标题中的“漂亮的js提示信息效果”指的是在网页中使用JavaScript实现的一种美观且具有交互性的提示信息展示方式。这种效果可以是通知、警告、确认对话框或者是其他形式的信息提示,为用户提供更加直观和友好的用户...

    vue项目js权限.zip

    在Vue项目中,JavaScript权限管理是一项重要的功能,它涉及到用户角色、权限控制以及页面元素的显示与隐藏。本文将深入探讨Vue项目中的JS权限配置,包括DOM遍历、多级展示、交互效果以及递归操作的应用,以帮助...

    原生JS消息提示特效插件Message.js.zip

    Message.js 是一个专为实现这种功能而设计的原生JavaScript插件。这个插件允许开发者轻松地在网页上添加各种样式和动画效果的消息提示,无需依赖其他大型库如jQuery,从而提高页面加载速度并降低资源消耗。 Message...

    js 提示信息

    在提供的压缩包文件“提示信息”中,可能包含了各种JavaScript提示的实现代码或者CSS样式,供开发者参考和使用。这些资源可以帮助开发者快速构建具有视觉吸引力和良好用户体验的提示信息。学习和理解这些示例,将有...

    jsTree 权限操作完整

    jsTree 权限操作 通过菜单加载权限。网上收集了1个星期,才整理出来的 通过ajax调取后台。后台数据表中的.id,parentId, text 三个必备参数。id,parentid 管理后,会自动生成树。使用了abp框架 可以提取你想要的部分

    js 权限控制

    详细介绍了js的权限机制 很值得一看 大家可以看看 有问题联系我啊

    消息提示框 js ajax

    本文将深入探讨如何使用JavaScript(JS)和Ajax技术来创建一款类似于QQ弹窗的炫酷消息提示框。 首先,我们来了解JavaScript(JS)。JavaScript是一种轻量级的解释型编程语言,广泛应用于网页和网络应用开发。它主要...

    js自动提示邮箱

    在JavaScript和jQuery的世界里,"js自动提示邮箱"是一个常见的功能,它涉及到用户输入时的实时验证和自动补全。这种技术通常用于提高用户体验,帮助用户更快、更准确地输入邮箱地址,避免输入错误。本篇文章将深入...

    JS实现自动提示文本框

    在本项目中,"JS实现自动提示文本框"指的是利用JavaScript来创建一个功能,当用户在文本框输入时,能够实时显示与输入内容匹配的提示信息,这种功能常见于搜索框或自动补全输入场景。 要实现这样的功能,首先需要在...

    两个js鼠标提示的例子

    在JavaScript(js)编程中,鼠标提示(Tooltip)是一种常见的用户界面元素,它可以在鼠标悬停在特定元素上时显示额外的信息。本话题主要探讨两个JavaScript实现鼠标提示的例子,通过`mouseTip.htm`和`mouseEvent....

Global site tag (gtag.js) - Google Analytics