首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SCRIPT70: JQuery Ajax Post上的拒绝权限

SCRIPT70: JQuery Ajax Post上的拒绝权限
EN

Stack Overflow用户
提问于 2016-10-10 02:28:57
回答 1查看 1.6K关注 0票数 1

我最近遇到了这个奇怪的错误。以下是整个过程的流程。

  1. 对于一个网站有一个JQuery ajax帖子调用,它将刷新一个div的内容。它将传递参数到该网站,并将返回HTML脚本。
  2. 如果文章成功,它将首先清除div并使用从该网站检索的返回值重写它。

错误发生在第2点。

奇怪的是:

在我的机器中,它工作得很好(Windows 8),在虚拟机(Windows 10)中也是如此。我使用相同的浏览器(IE 11和Edge)来实现这两种浏览器。但是,我的同事无法完成第2点,因为他的客户端错误SCRIPT70:权限被拒绝。他正在使用。

我将在下一次更新中发布部分代码。但到目前为止,我已经检查过它的安全性,但没有真正的。

我该怎么解决这个问题?

更新

下面是通过JQuery Ajax调用一个网站(或aspx)并检索和更新div的代码。

代码语言:javascript
运行
复制
function RefreshDiv(isChild) {
  var data = {
    ActionType: "AJAX",
    Action: "Refresh"
  };

  $.post("RefreshDivContents.aspx", data, function (result) {
    if(result != '') {
      var divItems;

      if(isChild) {
          divItems = window.parent.$("#TopDiv").find("#DivItems");
      }
      else {
          divItems = $("#DivItems");
      }

      divItems.empty(); // error hit here.
      divItems.append(result);
    }
  });
}

更新#2 I更新了示例代码以获得更多信息。此外,我把错误发生的地方,但我不知道它为什么击中那里。它应该只清除项目。

基于雅各布的回复,更新#3,我好奇这两个iframe的协议和端口号是什么,下面是基于控制台的结果。

EN

回答 1

Stack Overflow用户

发布于 2016-10-14 03:42:15

这似乎有问题:

代码语言:javascript
运行
复制
divItems = window.parent.$("#TopDiv").find("#DivItems");

我从这个片段中可以看出,关键问题在于同源政策。一个来源的文档不能更新另一个来源中的内容。例如,在本例中,您的代码可能在iframe中运行,并试图更新父文档中的div。如果这两份文件来源相同,那就没问题了。

这就是为什么我会问关于URL的问题。必须考虑两个文档的URL是什么,才能找到使脚本正常工作的解决方案:

如果文档A来自http://example.com,文档B来自http://www.example.com,那么document B只需运行document.domain = 'example.com';就可以更改起源。

如果这两个文档具有不同的端口号,但具有相同的域和协议,则它们都可以将document.domain设置为相同的域,以从它们的起源中删除端口号,从而使它们兼容。

如果其中一个使用HTTPS,而另一个使用HTTP,那么加载的非安全帧是很奇怪的,即使加载了,您也将很难访问另一个文档。

如果这两个域名完全不兼容,则必须实现CORS

总之,您需要了解相同的来源策略,这是一个真正的痛苦,但保护用户免受恶意脚本,然后构建您的应用程序来适应它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39950538

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档