Как отправить "origin" в качестве реферера для файла favicon.ico при нажатии на изображение?
У меня есть простой предварительный просмотр изображения, который при нажатии приводит вас к полноразмерному изображению:
<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>
Проблема: в дополнение к запросу на изображение, браузер также запросит favicon.ico. Заголовки запроса для изображения: Referer: https://example.com/
(как и ожидалось). Однако для запроса файла favicon.ico этот заголовок является полным URL-адресом ссылающейся страницы: Referer: https://example.com/where-I-was
,
Как установить заголовок Referer для запроса favicon.ico просто на источник? Я не хочу, чтобы полный URL отображался в моих журналах nginx. Спасибо!
1 ответ
Опция 1
Использовать referrerpolicy
Атрибут HTML в теге ссылки - см. Документы по MDN.
<a href="/myimage.jpg" referrerpolicy="origin">
Вариант 2
Использовать webRequest
API для перезаписи заголовка 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"]
);