Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/416.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在iframe中进行HTTP重定向,而不是在父窗口中进行重定向_Javascript_Html_Redirect_Iframe_Web Applications - Fatal编程技术网

Javascript 在iframe中进行HTTP重定向,而不是在父窗口中进行重定向

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=“…” 允许表单允许表单提交 允许

我正在开发一个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>