【问题标题】:How to avoid window reload如何避免窗口重新加载
【发布时间】:2014-01-14 06:47:56
【问题描述】:

我们目前正在开发一个 http 代理,它可以截取来自网络的 url 并在 iframe 中显示内容。我们在 JavaScript 中遇到了一些关于 url 的问题,因为 JavaScript url 依赖于 window.location 属性。一些站点修改window.location 属性,然后URL 重定向到我们代理之外的站点。当window.location更改和修改指向我们代理url的host属性时,是否有可能拦截?

一个例子:

我们的代理网址如下所示:www.proxyweb.com?remote_web=http://www.remoteweb.com

www.remoteweb.com 的 JavaScript 代码执行 window.location.pathName="page2"。 结果是一个类似“www.proxyweb.com/page2/”的网址 并且必须是这样的:“www.proxyweb.com?remote_web=www.remoteweb.com/page2”。有什么想法吗?

【问题讨论】:

  • 我认为您必须在添加到您的系统之前检查每个网站,就像其他代理流量网站一样。或者您可以在 weindo.location 中找到类似代码的任何地方调整网站 javascript 代码。.跨度>

标签: javascript proxy window.location


【解决方案1】:

您可能会发现这个问题,它的答案很有用:How can I prevent JavaScript in an iFrame to access properties of the outer site, even if the iFrame's content comes from the same origin?

更具体地说,使用 HTML5 Sandbox 属性以及允许异常的选项,因为我假设您希望 iframe 仍然执行 JS 和其他东西,这应该可以解决问题,至少对于大多数现代浏览器而言。

正如链接问题中所引用的,此页面应该解释更多:http://msdn.microsoft.com/en-us/hh563496.aspx

【讨论】:

  • sanbox 属性仅阻止 iframe 内容修改我窗口中的 url,但是当 iframe 中的 javascript 代码调用 window.location 时,它将重定向到 www.proxyweb.com/page2/ 在 iframe 内显示 NOT FOUND .
  • 您是否可以访问 iframed 页面的源代码/javascript?如果不是,那么我不相信这是可能的,因为你真的没有理由不能这样做来“窥探”来自银行网站的变量或使用 GET 变量的 SSO 登录过程,这本质上是一个原因不允许父窗口完全访问子 DOM。
  • 我可以访问 java 服务器 webapp(代理)中页面的源代码。也许我可以生成自己的 javascript 来替换服务器上的 javascript,但这不是通用的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-03-28
  • 1970-01-01
  • 2013-03-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多