iframe中的HTTP重定向,而不是父窗口中的重定向

Bou*_*rne 4 html javascript iframe redirect web-applications

我正在开发一个Web应用程序.在这个Web应用程序中,我必须从iframe中的不同服务器(例如:www.xyz.com)加载网页.但有时当我尝试从iframe中的某个不同服务器加载网页时,服务器会使用位置标头字段中的重定向链接以HTTP状态代码302(代表重定向)进行响应.发生这种情况时,主窗口(我的Web应用程序)被重定向,而不是仅在iframe中发生重定向.如何确保重定向仅在iframe而不是主窗口中发生?

小智 6

使用sandbox ="..."

  • 允许表单允许表单提交
  • allow-popups允许弹出窗口
  • allow-pointer-lock允许指针锁定
  • allow-same-origin允许文档保持其原点
  • allow-scripts允许JavaScript执行,并允许功能自动触发
  • allow-top-navigation允许文档通过导航顶层窗口而突破框架

顶部导航是您想要阻止的,因此请将其保留,并且不允许这样做.遗漏的任何东西都会被封锁

恩.

        <iframe sandbox="allow-same-origin allow-scripts allow-popups allow-forms" src="http://www.example.com"</iframe>
Run Code Online (Sandbox Code Playgroud)


rom*_*gon 5

问题不在于您的重定向,而在于之前发生的情况:我假设用户正在通过 提交表单,POST并且网络服务器根据最佳实践回复 302 重定向。

如果 a<form>具有action指向另一个页面的属性,则其答案将重定向顶部iframe。我找不到任何说明该行为的参考文档,但这就是它在当前浏览器中的工作原理。

解决方案是将target属性设置为_self

<iframe>
    ...
    <form action="http..." target="_self" >
    ...
</iframe>
Run Code Online (Sandbox Code Playgroud)

sandbox属性在这里没有帮助,您可能希望省略该属性或allow-forms allow-navigation至少设置该属性。