Мы используем встраивание Discourse для Jekyll по адресу New ROOT Web Site! - ROOT — всё работает отлично! Однако, если браузер подавляет заголовок Referer:, мы получаем ошибку 400 Bad Request. Попробуйте сами: если переключиться в приватное окно Firefox (которое подавляет рефереры), встраивание перестаёт работать. То же самое касается Safari, который, кажется, более строго относится к передаче рефереров.
Я перепроверил, зайдя по ссылке New ROOT Web Site! - Blog - ROOT Forum в приватном окне Firefox — получил HTTP 400. Затем я отредактировал запрос, добавив Referer: https://root.cern/blog/new-web-site/, и ошибка 400 сменилась на успешный ответ 200.
У нас включена опция «встраивание с любого домена». Комментарии настроены только для одного сайта встраивания. Есть ли способ заставить это работать?
Спасибо, что посмотрел это! Это вполне может быть связано с различием в доменных именах: я могу представить, что браузеры передают реферер для запросов к одному и тому же домену, но не для запросов к другому домену. Но хотя это интересно, я пока не вижу, что мы можем сделать, чтобы исправить это — мы не сможем использовать root.cern в качестве домена форума, а встраивание между доменами казалось ключевой и очень полезной функцией… Просто ли это становится рискованным в наши дни из-за усиления защиты конфиденциальности, или ты можешь предложить какой-то выход?
Возможно, я попробую настроить обратный прокси с root.cern/forum на root-forum.cern.ch. Тогда встраивание можно будет выполнить так, будто оно происходит на том же хосте, и мы сохраним реферер…? Вернусь к тебе
Для встраивания между сайтами на страницах встраивания добавьте либо
<meta name="referrer" content="strict-origin"> с настройкой Path Allowlist (список разрешённых путей) как /.* (поскольку путь не будет предоставлен), либо
<meta name="referrer" content="no-referrer-when-downgrade"> с реальным Path Allowlist.
Как упоминается в Referrer-Policy header - HTTP | MDN, «браузеры предпринимают усилия по переходу к более строгому значению по умолчанию», а встраивание Discourse опирается на старое значение по умолчанию для встраивания между разными хостами.
Просто предупреждение, Теджас: насколько мне известно, без тега meta Safari и Firefox в приватном режиме полностью подавляют заголовок Referer. То, что вы предлагаете, может сработать в Chrome >= 85, но добавление тега meta выглядит более надежным и универсальным решением. И я подозреваю, что для большинства встраиваний это достаточно тривиально?