【问题标题】:Rgd: Javascript redirect top parent pageRgd:Javascript 重定向顶部父页面
【发布时间】:2012-07-27 07:33:02
【问题描述】:

编辑问题

总结:

我有 2 个网站 网站A.com siteB.com

iframe 属于 siteB.com 但我也想允许 siteA.com 到 iframe siteB.com 页面。然而,任何不是 siteA 或 siteB.com 的东西都将被重定向到 siteA.com

使用 javascript,我如何检查,考虑忽略 www 或不带 www(wildcard),并且我的网站可能是 siteA.com/pretty-url

我如何进行检查并使用 javascript 添加安全性,任何未经授权的随机站点都会导致 window.top.location.href 被重定向到 siteA.com

感谢大家的帮助,新来的:)

【问题讨论】:

标签: javascript


【解决方案1】:

像这样?:

if (window.top != window && !window.top.location.href.split('?')[0].split('#')[0].match('mysitedomain.com'))
{
    window.top.location.href = window.location.href;
}

第一项检查是确保仅当您的网站位于框架中时才运行此代码。
第二项检查是查看顶部框架(浏览器窗口)的 url 是否包含您的域。我们需要忽略查询字符串/锚点,因为它看起来像这样:http://notmine.com/path/file.html?subframe=mysitedomain.com

这仍然匹配:

http://not*mysitedomain.com*/path

在 .match(...) 中,您可以包含 http:// 或 https://。

更新以回答您的修改:

var topUrl = window.top.location.href.split('?')[0].split('#')[0];

if (window.top != window && !topUrl.match('siteA.com') && !topUrl.match('siteB.com'))
{
    window.top.location.href = "siteA.com";
}

【讨论】:

  • 在 split() 之后使用 [0],如 split('?')[0]
  • @AnkitGautam。我的错。谢谢!
  • 当页面位于不同的来源时,这将引发错误。与其手动操作 location.href 字符串,不如使用location.protocollocation.host(也许还有location.pathname)。
  • @flem .match 是一个字符串方法,它将第一个参数解释为正则表达式。点在 RegExp 中具有特殊含义,它几乎匹配每个字符。我强烈建议合并我之前评论中的信息。您当前的“检查”很容易被规避(假设同源策略没有加入,这不太可能),http://evil/?http://siteA.comhttp://siteB.com
猜你喜欢
  • 2011-01-15
  • 2023-03-26
  • 2011-01-06
  • 1970-01-01
  • 2013-03-12
  • 1970-01-01
  • 2015-03-15
  • 2021-08-17
  • 2017-04-13
相关资源
最近更新 更多