如何在firefox插件中可靠地找到请求的引用者?

时间:2011-09-19 12:49:13

标签: firefox-addon

我在nsIHttpChannel找到了referrer属性,大部分时间都可以使用这个属性,但这仅限于某些安全检查(例如,如果您从HTTPS导航到一个HTTP URL)。

我可以看到有可能获得加载上下文(nsILoadContext),并且通过它可以找到关联窗口之类的东西,但我找不到通过这些方法查找引用者信息的方法。

所以我的问题是这个;对于那些具有引用URL但未通过nsIHttpChannel referrer属性上的安全检查的请求,是否有办法获取引荐来源信息?

1 个答案:

答案 0 :(得分:0)

即使在未发送docshell.internalReferrer标头的情况下,Gecko也会将引荐来源保存在Referer属性中。在大多数情况下,您应该能够读出这样的推荐人信息:

if (channel instanceof nsIPropertyBag)
{
  try
  {
    referrer = channel.getProperty("docshell.internalReferrer");
  }
  catch (e)
  {
    // Internal referrer not set, fall back to the Referer header
    referrer = channel.referrer;
  }
}