访问控制允许 Headers 不允许加载 iframe 的内容
Access Control Allow Headers not allowing contents of an iframe to load
我在同一目录中有两个 php 页面。这些是 edit_page.php
和 page.php
.
edit_page.php
有一个所见即所得的编辑器,我可以在其中通过 iframe 编辑另一个页面的内容。 iframe 的来源是 page.php
,带有查询 ?page_id=XXX
.
当我转到 page.php?page_id=XXX
时,我可以看到以下 headers:
然而,当我转到 edit_page.php?page_id=XXX
时,我在控制台中看到以下错误:
我尝试将 headers 放在发送请求的页面中只是为了笑,即使我知道它正在发出请求而不是发送响应 header... 值得试一试 :P
我发送的 header 是:
header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Methods: GET, POST");
header("Access-Control-Allow-Headers: Content-Type");
header("X-Frame-Options: *");
我有点被这个问题困住了,我以前从未遇到过这种问题。如果有人能指出我正确的方向,将不胜感激。
此外,如果有人能首先解释为什么会发生这种情况,那就太好了。我的理解是,这会发生在来自交叉来源的页面上,例如从不在同一域中的外部源加载内容。但显然这两个文件不仅在同一个域,而且在同一个目录。
错误消息说 https://lifting365.com/EUR/beta/admin/page/
已设置 X-Frame-Options: sameorigin
。
您似乎试图在 [=13] 上设置 X-Frame-Options: *
(这不是 header 的有效值,请尝试 reading the documentation 以查看允许的值) =].
所以第一个问题是 你在错误的页面上设置了 headers。
您要在框架中显示的页面需要授予权限。包含 <iframe>
元素的页面不需要授予自身包含 iframe 的权限!
你的第二个问题是你的基本方法是错误的。
您不应该试图降低安全限制,这样来自 https://lifting365.com
的页面可以显示在 http://lifting365.com` 上。您应该将所有 页面移动到 HTTPS。
这将:
- 让他们更安全、更值得信赖
- 放在同一个原点上(消除你问的问题)
Also if anyone can explain why this is happening in the first place that would be great.
使两个来源相同所需的因素之一是共享 URL 方案。 http:
和 https:
不同。
好吧,现在我觉得自己很蠢....
我有:
<iframe name="richTextField" id="wysiwyg" src="page?page_id=1"></iframe>
而不是:
<iframe name="richTextField" id="wysiwyg" src="page.php?page_id=1"></iframe>
我想脑死了
我在同一目录中有两个 php 页面。这些是 edit_page.php
和 page.php
.
edit_page.php
有一个所见即所得的编辑器,我可以在其中通过 iframe 编辑另一个页面的内容。 iframe 的来源是 page.php
,带有查询 ?page_id=XXX
.
当我转到 page.php?page_id=XXX
时,我可以看到以下 headers:
然而,当我转到 edit_page.php?page_id=XXX
时,我在控制台中看到以下错误:
我尝试将 headers 放在发送请求的页面中只是为了笑,即使我知道它正在发出请求而不是发送响应 header... 值得试一试 :P
我发送的 header 是:
header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Methods: GET, POST");
header("Access-Control-Allow-Headers: Content-Type");
header("X-Frame-Options: *");
我有点被这个问题困住了,我以前从未遇到过这种问题。如果有人能指出我正确的方向,将不胜感激。
此外,如果有人能首先解释为什么会发生这种情况,那就太好了。我的理解是,这会发生在来自交叉来源的页面上,例如从不在同一域中的外部源加载内容。但显然这两个文件不仅在同一个域,而且在同一个目录。
错误消息说 https://lifting365.com/EUR/beta/admin/page/
已设置 X-Frame-Options: sameorigin
。
您似乎试图在 [=13] 上设置 X-Frame-Options: *
(这不是 header 的有效值,请尝试 reading the documentation 以查看允许的值) =].
所以第一个问题是 你在错误的页面上设置了 headers。
您要在框架中显示的页面需要授予权限。包含 <iframe>
元素的页面不需要授予自身包含 iframe 的权限!
你的第二个问题是你的基本方法是错误的。
您不应该试图降低安全限制,这样来自 https://lifting365.com
的页面可以显示在 http://lifting365.com` 上。您应该将所有 页面移动到 HTTPS。
这将:
- 让他们更安全、更值得信赖
- 放在同一个原点上(消除你问的问题)
Also if anyone can explain why this is happening in the first place that would be great.
使两个来源相同所需的因素之一是共享 URL 方案。 http:
和 https:
不同。
好吧,现在我觉得自己很蠢....
我有:
<iframe name="richTextField" id="wysiwyg" src="page?page_id=1"></iframe>
而不是:
<iframe name="richTextField" id="wysiwyg" src="page.php?page_id=1"></iframe>
我想脑死了