Javascript 在iframe中进行HTTP重定向,而不是在父窗口中进行重定向
我正在开发一个web应用程序。 在这个web应用程序中,我必须在iframe中从不同的服务器(例如:www.xyz.com)加载一个网页。但有时,当我尝试从iframe中的某个不同服务器加载web页面时,服务器会使用HTTP状态代码302(代表重定向)和Location header字段中的重定向链接进行响应。发生这种情况时,将重定向主窗口(我的web应用),而不是仅在iframe中重定向。如何确保重定向只发生在iframe而不是主窗口中?使用sandbox=“…”Javascript 在iframe中进行HTTP重定向,而不是在父窗口中进行重定向,javascript,html,redirect,iframe,web-applications,Javascript,Html,Redirect,Iframe,Web Applications,我正在开发一个web应用程序。 在这个web应用程序中,我必须在iframe中从不同的服务器(例如:www.xyz.com)加载一个网页。但有时,当我尝试从iframe中的某个不同服务器加载web页面时,服务器会使用HTTP状态代码302(代表重定向)和Location header字段中的重定向链接进行响应。发生这种情况时,将重定向主窗口(我的web应用),而不是仅在iframe中重定向。如何确保重定向只发生在iframe而不是主窗口中?使用sandbox=“…” 允许表单允许表单提交 允许
- 允许表单允许表单提交
- 允许弹出窗口允许弹出窗口
- 允许指针锁定允许指针锁定
- 允许相同来源允许文档保持其来源
- 允许脚本允许JavaScript执行,还允许自动触发功能
- 允许顶部导航允许文档通过导航顶级窗口脱离框架
问题不在于您的重定向,而在于之前发生的事情:我假设用户正在通过POST
提交表单,Web服务器根据最佳实践回复302重定向
如果
具有指向另一页的操作
属性,则其答案将重定向顶部iframe。我找不到任何说明这种行为的参考文档,但这就是它在当前浏览器中的工作方式
解决方案是将target
属性设置为\u self
:
<iframe>
...
<form action="http..." target="_self" >
...
</iframe>
...
...
sandbox
属性在这里不起作用,您可能希望忽略该属性,或者至少设置allow forms allow navigation
。当我设置target=“iframe\u name”时,它对我有效。仅在服务器端重定向时,这是不可能的。我敢打赌,包含在iframe中的网站有一种特殊的保护,当它检测到它只是使用javascript从iframe中跳出并重新加载父对象时,它会受到这种保护。你能做的最好的事情就是与你试图在iframe中显示的网站的所有者交谈。这不会在iframe中导航,而是会出现一个实际的弹出窗口。不要认为这是问题所在。
<iframe>
...
<form action="http..." target="_self" >
...
</iframe>