Bou*_*rne 4 html javascript iframe redirect web-applications
我正在开发一个Web应用程序.在这个Web应用程序中,我必须从iframe中的不同服务器(例如:www.xyz.com)加载网页.但有时当我尝试从iframe中的某个不同服务器加载网页时,服务器会使用位置标头字段中的重定向链接以HTTP状态代码302(代表重定向)进行响应.发生这种情况时,主窗口(我的Web应用程序)被重定向,而不是仅在iframe中发生重定向.如何确保重定向仅在iframe而不是主窗口中发生?
小智 6
使用sandbox ="..."
顶部导航是您想要阻止的,因此请将其保留,并且不允许这样做.遗漏的任何东西都会被封锁
恩.
<iframe sandbox="allow-same-origin allow-scripts allow-popups allow-forms" src="http://www.example.com"</iframe>
Run Code Online (Sandbox Code Playgroud)
问题不在于您的重定向,而在于之前发生的情况:我假设用户正在通过 提交表单,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
至少设置该属性。