【问题标题】:How does javascript's referrer property work under the hoodjavascript 的 referrer 属性如何在幕后工作
【发布时间】:2016-08-05 04:23:11
【问题描述】:

javascript 的referrer 属性如何工作?它是否只是检查 http 标头数据并输出它在那里找到的内容?

referer 属性的访问方式如下:

var ref = document.referrer;
console.log(ref);

另外,我注意到 http 引用 (Chrome Dev Tools->Network->Top HTTP Request->Referer) 经常被剥离为只有域名而没有任何子域。例如,如果用户来自www.facebook.com/stackoverflow,那么他的推荐人总是只是www.facebook.com。为什么会这样?

【问题讨论】:

  • 谢谢!在您链接的页面上,我没有找到我正在寻找的信息。确切地说,它没有说明它是如何获得引荐来源的(它是否查看了标题?)。它只是说明它是什么。 URI 可以是 www.facebook.com 或 www.facebook.com/stackoverflow。所以我仍然不知道正确的答案是什么。如果这个问题似乎很容易回答,我很抱歉,但由于缺乏经验,我无法给出一个好的解释。
  • document.referrer 属性按字面意思返回 Response Header Referrer 值。这是我从谷歌访问此页面的示例:DNT: 1 Referer: https://www.google.co.uk/ Accept-Encoding: gzip, deflate, sdch
  • @evolutionxbox 据我了解,它没有。它返回 Request Header Referrer 值。
  • @Federico 在规范中没有区别w3.org/TR/2009/REC-DOM-Level-2-HTML-20090303/…。也许它不是特定的标头值或响应值。

标签: javascript http-headers http-referer


【解决方案1】:

Remember to always read the documentation.

document.referrer 属性从 Request Header 中返回一个字符串。

这是我从谷歌访问此页面的示例:

GET /questions/36609134/how-does-javascripts-referrer-property-work-under-the-hood HTTP/1.1
Host: stackoverflow.com
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.76 Mobile Safari/537.36
DNT: 1
Referer: https://www.google.co.uk/
Accept-Encoding: gzip, deflate, sdch
Accept-Language: en-GB,en;q=0.8,en-US;q=0.6

有关请求标头referer的更多信息,请访问Wikipedia

【讨论】:

  • 再次感谢您!谷歌通常附有查询字符串。这些总是从推荐人中删除。这有点合乎逻辑。如果您从 faceboook.com/SOquestion 子域提出这个问题,那么子域也会被剥离。是否有解释为什么从引荐来源网址中删除子域?这只是人们坚持的约定吗?
  • 我认为这不是惯例。查看 Wikipedia (en.m.wikipedia.org/wiki/HTTP_referer) 了解有关 http 引用值的详细信息。
  • “document.referrer 属性从字面上返回响应标头中的字符串” - 这不是您链接到的文档所说的。您提供的唯一证据表明,在给定常见条件(可能存在例外)的情况下,值是相同的。
  • "响应头引用者" — 它是请求头,而不是响应头。
猜你喜欢
  • 2014-01-13
  • 1970-01-01
  • 2023-03-26
  • 2020-08-10
  • 1970-01-01
  • 2019-04-28
  • 2018-12-16
  • 2020-12-23
相关资源
最近更新 更多