Как отправить «origin» в качестве реферера для файла favicon.ico при нажатии на изображение? - PullRequest
0 голосов
/ 05 декабря 2018

У меня есть простой предварительный просмотр изображения, который при нажатии приводит вас к полноразмерному изображению:

<html>
  <head>
    <meta name="referrer" content="origin">
  </head>
  <body>
    <a href="/myimage.jpg">
      <img src="/myimage.jpg" title="my image" border="0" />
    </a>
  </body>
</html>

Проблема: в дополнение к запросу изображения браузер также запрашивает значок.ico.Заголовки запроса для изображения: Referer: https://example.com/ (как и ожидалось).Однако для запроса файла favicon.ico этот заголовок является полным URL-адресом ссылающейся страницы: Referer: https://example.com/where-I-was.

Как установить в заголовке Referer для запроса favicon.ico просто источник?Я не хочу, чтобы полный URL отображался в моих журналах nginx.Thx!

1 Ответ

0 голосов
/ 05 декабря 2018

Опция 1

Использование атрибута referrerpolicy HTML в теге ссылки - см. Документы по MDN .

<a href="/myimage.jpg" referrerpolicy="origin">

Опция 2

Используйте API webRequest для перезаписи заголовка Referer - см. Страницу MDN здесь .Просто установите заголовок на то, что вам нужно - кажется, вас может заинтересовать объект window.location .

Пример кода - изменен со страницы MDN :

var targetURL = "http://example.com/favicon.ico";

var protocol = window.location.protocol;
var hostname = window.location.hostname;
var port = window.location.port;

var origin = protocol + '//' + hostname + (port ? ':' + port : '');

function rewriteUserAgentHeader(e) {
  e.requestHeaders.forEach(function(header){
    if (header.name.toLowerCase() == "referer") {
      header.value = origin;
    }
  });
  return {requestHeaders: e.requestHeaders};
}

browser.webRequest.onBeforeSendHeaders.addListener(
  rewriteUserAgentHeader,
  {urls: [targetURL]},
  ["blocking", "requestHeaders"]
);
...