允许子域之间的跨站点请求,而不改变第二个子域的文件内容
Allowing cross-site requests between subdomains without changing file contents of second sub domain
我目前正在尝试包装一个web应用程序(ConnectWise),以便包含在我公司的中央内部网站点中。这在很大程度上是一个相当简单的过程;创建一个包含页面,使用iframe,将iframe指向ConnectWise url。这部分几乎适用于所有功能。
问题出现在应用程序的某些选择功能中(在本例中,是创建时间表条目的过程的一部分),这些功能根本无法工作。Chrome给出如下控制台输出:
Uncaught SecurityError: Failed to read the 'frame' property from 'Window': Blocked a frame with origin "https://app.example.com" from accessing a frame with origin "https://host.example.com". Protocols, domains, and ports must match.
我知道这是由跨站点和同源策略的安全选项引起的。考虑到以下几点,是否有办法克服这一点?
- 我有完全控制对
https://host.example.com
- 我可以更改html、javascript和文件内容
- 我可以更改IIS设置和头文件
- 我有部分控制对
https://app.example.com
- 我不能更改html, javascript和文件内容
- 我可以更改IIS设置和头文件。
我已经尝试在每个服务器上设置Access-Control-Allow-Origin
,这是迄今为止我遇到的唯一不涉及能够更改应用程序服务器的文件内容的方法。当给定
-
*
或https://app.example.com
当https://host.example.com
-
*
或https://host.example.com
,而https://app.example.com
这个"重复"问题的答案在这里不适用。我不有权更改iframed页面(app.example.com
)的文件内容(包括javascript)。此外,需要运行权限的脚本是iframe内的页面,而不是承载iframe的页面。
CORS头如Access-Control-Allow-Origin
只影响AJAX请求,不影响DOM访问。
然而,如果它们都在同一域但不同的子域,那么你可以在每个页面上包括以下内容:
document.domain = 'example.com';
从MDN: 允许一个文档访问另一个文档,如果它们都设置了文档。域设置为相同的值,表明其意图合作
如果app.example.com
有任何script
包含到host.example.com
,那么你可以把上面的代码放在这些脚本中来设置域。
。
<script src="https://host.example.com/setup.js"></script>
不可能。
Access-Control-Allow-Origin
主要影响从HTTP请求获取原始数据,而不是实时dom。
postMessage
可以让不同来源的帧进行通信,但它要求两个页面都包含JS
- 下拉选择可自动更改第二个下拉选择
- 为什么不'在JQuery中找到第二个css选择器的工作
- 当单击第一个李时,它显示内容一,当单击第二个李时,它显示内容二
- CORS-重定向到第二个GET正在接收的页面
- 正则表达式与数字中的第二个点匹配
- 如何在react js中移动第二个组件
- 使用Javascript,如何显示<tr>在另一<tr>悬停时,隐藏第二个<tr>
- 关闭第二个事件源上的第一个事件源's onopen方法
- D3从嵌套的JSON中绘制第二个圆环图
- IE11中的第二个调用取消了第一个Fetch API调用
- 两个指令引用一个变量,但第二个指令不引用;不要急于改变
- JAVASCRIPT:分配给另一个方法的方法与第一个方法的变化值相同,改变第二个方法
- 为什么第二个对象的值没有改变
- 为什么将变量的console.log()移动到第二个AJAX调用中会改变输出?
- 第二个函数不改变按钮的值
- 如何改变SVG中元素的属性,当我鼠标悬停在第二个SVG的元素使用D3
- 如何获得第二个组合框值后,第一个改变(jquery)
- 如何禁用(或改变颜色)第二个下拉选项取决于第一个选择
- Jquery使用.text()可以改变bootstrap类的第一个span,但不能改变第二个span
- 如何改变第二个CSS属性&第6个DIV使用jquery