apache - 无法在父jsp中访问不同来源的iframe

标签 apache jsp iframe ssl

所需功能类型的快速示例(仅作为示例):

http://www.indeed.hk/cmp/Calvin-Klein-Jeans-&-Calvin-Klein-Underwear/jobs/Part-Time-Sales-Associate-1643e24903d9f4c7

如果您点击立即申请按钮,它会显示一个 iframe。

我有一个项目,我试图访问不同来源的 iframe,比如 https://subdomain.example.com,在 jsp 页面上说 http://www.example.com 但它给了我以下错误:

Failed to read the 'contentDocument' property from 'HTMLIFrameElement': Blocked a frame with origin http://www.example.com from accessing a frame with origin https://subdomain.example.com. The frame requesting access has a protocol of "http", the frame being accessed has a protocol of "https". Protocols must match.

我们将父jsp页面称为parent.jsp,将iframe jsp称为iframe.jsp。
parent.jsp在服务器S上,项目名为xyznet
iframe.jsp在服务器R上,项目名为xyz

这是parent.jsp中的一段代码

<%
    java.util.Map model = (java.util.Map)pageContext.findAttribute("model");
%>
<html>
 <body>
 <h1> This is the parent page
    <iframe id="quick-apply-frame" name="iframe-name" src="       <%=https: //sub.domain.com/apply.html?ref=${model.x.y}" onload="quickSetParams();">
    </iframe>
<script>
 function quickSetParams() {
 $("[name=iframe-name]").contents().find("[name=iframe-param-name]").val(${model.value1}');
}
</body>
</html>

这是 iframe.jsp

中的一段代码
<html>
<body>
<form action="xyz.html">
    <input name="iframe-parm-name" value=""/>
     <input name="iframe-parm-name2" value="${model.parm2}" />
</form>
</body>
</html>

加载 iframe.jsp 的处理程序是一个位于服务器 R 上的 SimpleFormController

我遇到过一些使用 javascript 直接传输数据的解决方案,但我需要一个处理程序,因此,直接的 javascript 重定向或嵌套 iframe 对我来说不起作用

最佳答案

感谢 James 提供的一些线索。我终于让它工作了!

我仍然不完全理解它是如何工作的,但这是我所做的:

我不会在加载 parent.jsp 的同时加载 iframe.jsp(位于 https://sub.domain.com)。意味着,iframe 的 src 最初没有设置。 相反,一旦单击父级中的“showIframe”按钮,我就会调用一个 javascript 函数来加载 iframe。我从某人那里得到一个建议,要解决跨域安全问题,您必须在页面加载后通过 javascript 设置 iframe 的 src。

其他可以探索的更多指针是 CORS,您可以在 ssl.conf 或 httpd.conf(apache 配置)中添加这样的参数 header 设置 Access-Control-Allow-Origin“http://www.domain.com”。它基本上授予访问提到的域的权限

关于apache - 无法在父jsp中访问不同来源的iframe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27518775/

相关文章:

mysql - 使用jsp向MySQL表插入一行

javascript - 无法使用 jquery 访问通过 google chrome 内容脚本注入(inject)的 iframe 内容

apache - Web 应用程序可以在 Apache Web 服务器上运行吗?

php - Apache/PHP 和 Systemd/node 可读的环境变量

java - 如何在 JSP 中动态生成 URL?

java - 使用 ext-js 的服务器端技术

css - 如何使 iframe 适合 ionic 模态

silverlight - 为什么我的 HTML 菜单弹出窗口显示在 silverlight 控件下方?

Apache RewriteRule 不适用于单个输入

sql - 连接到数据库失败。汤姆猫 Apache