javascript - 如何正确设置跨域脚本执行?

标签 javascript iframe http-headers

我们使用第三方报告应用程序服务器。我们的应用程序(我们将称之为站点 A)包含一个由报告服务器提供的脚本,该脚本具有嵌入报告的方法。调用该方法时,它会创建一个 iFrame,从报告服务器(我们将此称为站点 B)加载请求的报告、脚本和样式。

报告页面按预期加载,嵌入其 iFrame 中。报告中的交互按预期进行。但是,报告页面(来自站点 B)随后将 postMessage() 发送到父级(站点 A)以调用方法来调整保存 iFrame 的容器元素的大小,并将另一个 postMessage() 发送到父级(站点 A)以进行滚动到同一容器元素的顶部。

vendor 告诉我们,我们需要实现正确的 CORS 设置才能使其正常工作,除了“其他客户端正在使用这种方法”之外,没有提供任何进一步的解释。目前它在控制台中抛出一个错误,指出:

Uncaught DOMException: Blocked a frame with origin "[Site B]" from accessing a cross-origin frame.

在过去的两天里,我在 MDN 和其他网站上阅读了大量文档,但我仍然对哪些设置应用于哪个服务器感到困惑?我在这里和那里看到了几个关于设置 header 的示例,但是我读到的几乎所有内容都仅适用于从客户端(由站点 A 提供服务)到远程(站点 B)发出 Ajax 请求,而没有任何关于必要内容的内容对于我们正在处理的场景。有人可以在这里阐明一些情况吗?哪个服务器需要哪些 header ?

非常感谢任何帮助。

最佳答案

CORS 在这里无关紧要。

该错误消息表明站点 B 正在尝试访问站点 A 上被禁止的内容。这意味着站点 B应该使用 postMessage,但实际上没有(或者至少没有正确)。

关于javascript - 如何正确设置跨域脚本执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42858030/

相关文章:

security - 什么情况下 HTTP_REFERER 会为空

Apache 条件重定向规则不转发 header 值

asp.net - Firefox 和 IE : Corrupted data when retrieved from cache

Javascript 赋值延迟?

javascript - 将点击分配给从数据库动态创建的数据

php - 如何在 selenium PHP 单元中切换到 iframe

jquery - 使用 jQuery onClick 函数加载特定的 iframe

javascript - 跨浏览器javascript函数查找页面中元素的实际位置

javascript - DataType.MultilineText 字段将破坏我的模式弹出部分 View 的整个验证

javascript - 如何从 iframe 导航到另一个页面?