我创建了一个与相当流行的音乐零售商一起使用的工具。
该工具提供了增强的搜索功能(透明的 last.fm 结果,没有广告,没有跛脚,没有令人毛骨悚然的东西),我发现显示搜索的最有用和不引人注目的方式是使用备受诟病的 iframe 作为工具栏。这允许用户在不窃取用户焦点的情况下加载搜索。
我不是 iframe 的特别忠实粉丝,我认为添加“关闭此框架”(ala Google 图片搜索)链接让用户快速轻松地重新获得对浏览器的控制权是微不足道的。
但是与谷歌不同,我不知道 iframe 中内容的位置是什么(仅通过 src 开始)。
所以现在我发现自己陷入了 XSS 的世界和所有与安全相关的问题。
使用 Javascript,我添加了“后退”和“前进”按钮以及从父级链接调用的历史对象(当用户进行搜索时,结果会加载到 iframe 中,因此后退按钮允许他们返回主完成使用/阅读搜索结果后的网站)。
有什么方法可以调用 iframe 中的当前位置并将页面(现在没有框架)重新加载到该位置?
我检查了 PHP $GLOBAL/$_SERVER 变量,看看我可能会走运。我知道存在安全问题,但我看不出这个特定的函数与 history.back() 有什么不同,浏览器在没有“通知”我的父框架的情况下自行调用。
我知道我可以从 iframe 本身检索 src 位置,但当然假设用户没有导航到此页面之外,如果他们这样做,他们不介意丢失当前位置并被重定向回最初调用的页面框架(……啊……)。
似乎框架旨在窃取窗口,无法优雅地“突破”并保持用户会话的完整性。
难怪人们讨厌他们。:)