【问题标题】:document.referrer exists but is always emptydocument.referrer 存在但始终为空
【发布时间】:2015-02-28 18:49:48
【问题描述】:

我正在开发 iOS 8 上的移动应用程序。document.referrer 似乎总是为空。我尝试使用以下方法检查它是否存在:

if( 'referrer' in document ) {
    alert('referrer ' + document.referrer);
}

它会引发警报,但无论我是从另一个页面访问它还是第一次访问该页面,该值始终为空。我还包含了元标记:

<meta name="referrer" content="always">

如何获取 document.referrer 的值?

编辑:我也忘了提到,我不是在开发原生 iOS 应用程序。我正在使用科尔多瓦、HTML5 和 JS。

【问题讨论】:

  • 您是如何访问您的页面的?如果您直接访问该页面,即不通过链接,则引用者始终为空。
  • 当您第一次直接访问链接时,我已经阅读了足够多的内容,知道它将是空的。其他任何时候,重定向都是通过 location.href="something.html" 发生的。当我在something.html中时,document.referrer还是空的。

标签: javascript ios cordova


【解决方案1】:

由于我们对您的本机包装器一无所知,因此可能发生了一些事情:

  1. document.referrer 派生自 HTTP 标头 Referer(注意历史拼写错误)。您的 iOS 代码中的某些内容可能正在设置或抑制该 HTTP 标头。

  2. 1234563 (例如,如果您有一个链接到远程站点的本地网页,则您不希望将本地文件名发送到远程网络服务器。)

如果您发现其中一种情况发生,您可以手动设置Referer 标头,如“Specifying HTTP referer in embedded UIWebView”中所述

【讨论】:

  • 您好,感谢您的回答。我不使用原生 iOS,所以我认为你提到我的链接不起作用?
  • 那么您需要提供有关您的应用程序的更多详细信息——您是如何托管/服务/启动它的?怎么样让它成为一个“iOS”网络应用程序?您究竟是如何导航到您正在寻找引荐来源网址的页面的?
  • 很抱歉。我正在使用科尔多瓦、HTML5 和 JS。我正在使用 location.href="page-path" 导航到页面。这些信息有帮助吗?
  • 您还没有回答您的网页是如何托管的。您的 Web 应用程序究竟是如何访问页面的?它们是从服务器托管的吗?与您的应用程序捆绑在一起?如果是后者,您将不会得到 Referer 标头,如上所述。
  • 我不确定,实际上。我认为没有使用服务器来托管页面 - 页面与应用程序捆绑在一起。在那种情况下,不会设置推荐人标头?奇怪的是,我们直到 iOS 7.1 才出现这个问题,这个问题只在 iOS 8 中出现。我不知道如何使用你提供的链接,因为我没有原生 iOS 开发经验。非常感谢您的耐心等待。
猜你喜欢
  • 2013-07-16
  • 2012-12-29
  • 1970-01-01
  • 1970-01-01
  • 2020-02-06
  • 1970-01-01
  • 2017-05-07
  • 2014-01-17
  • 1970-01-01
相关资源
最近更新 更多