我目前正试图包装一个Web应用程序(ConnectWise)以包含在我公司的中央Intranet站点中。这是一个相当简单的过程,使用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设置和标题
- 我有部分控制 o版本
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
编辑:
此处不适用于this "duplicate" question的解决方案。我不要有权更改iframed页面(app.example.com
)的文件内容(包括JavaScript)。另外,需要运行权限的脚本是iframe中的页面,而不是托管iframe的页面。
看到我的答案张贴在: [http://stackoverflow.com/questions/31232348/get-data-out-of-json-array-from-external-url/31237694#31237694 ] [1] [1]:http://stackoverflow.com/questions/31232348/get-data-out-of-json-array-from-external-url/31237694#31237694 –