Предотвращать создание ссылок при наличии редиректа

Если я правильно понимаю, Discourse использует GitHub - markdown-it/linkify-it: Links recognition library with full unicode support · GitHub для создания красивых ссылок с заголовками. Например, предыдущая ссылка отображается с заголовком GitHub - markdown-it/linkify-it: Links recognition library with full unicode support.

Однако у меня возникла следующая проблема: для доступа к некоторым размещённым ссылкам требуется авторизация в других инструментах (например, Jira, Google и т. д.). В результате все такие ссылки (и блоки для некоторых преобразованных URL) просто показывают Login to support или Meet Google Drive – One place for all your files[...], что выглядит не очень хорошо.

Существует ли уже какая-либо функция, компонент или плагин, позволяющие предварительно проверить URL и, в случае перенаправления, не отображать заголовок для ссылки?

2 лайка

Да, наше общее решение здесь — использование настройки сайта blocked onebox domains.

Добавьте все внутренние URL, требующие входа в систему, в этот список.

Мне интересно, @nat/@codinghorror, стоит ли нам добавить здесь настройку «сledgehammer».

block onebox on redirect — эта настройка может полностью блокировать любые onebox-превью, если происходит перенаправление. Это даёт очень простой рычаг для безусловного контроля такого поведения на множестве доменов.

3 лайка

Спасибо за подсказку насчёт внутренних ссылок.
Мы очень ценим возможность включения более общей функции «блокировать onebox при перенаправлении», так как мы не можем заранее знать полный список ссылок, которые могут публиковать пользователи.

Похоже, это не работает для ссылок, которые были преобразованы в гиперссылки, но не были обновлены до «onebox», а просто отображаются как заголовок (например, наша внутренняя ссылка https://support.sqills.com/browse/SCQI-934 превращается в Log in - Sqills Jira, тогда как базовый URL просто отображает https://support.sqills.com как заголовок ссылки).

2 лайка

Здесь определённо есть запутанный баг, который нам нужно исправить.

Я только что заблокировал support.sqills.com и подтвердил, что он работает как положено для https://support.sqills.com/browse/SCQI-934?1 https://support.sqills.com/browse/SCQI-934?1, но, к сожалению, https://support.sqills.com/browse/SCQI-934 кэшируется на стороне сервера в течение 24 часов, и пересборка HTML не сбрасывает кэш.

Мы исправим эту небольшую проблему на этой неделе, чтобы снизить нагрузку на поддержку. Блокировка перенаправления как вариант мне кажется отличным решением, возможно, мы сможем это реализовать. Может быть, лучше сформулировать как «блокировать onebox при перенаправлении между доменами», или это слишком детально… не уверен.

2 лайка

Это исправлено в:

Теперь при перестроении поста записи кэша для всех ссылок в посте удаляются до начала процесса перестроения.

А вот PR для добавления настройки сайта block_onebox_on_redirect:

Когда включена настройка block_onebox_on_redirect, Discourse никогда не будет создавать onebox для URL-адресов, которые перенаправляют. Единственное исключение — если URL использует http и перенаправляет на https-версию того же URL. Это сделано потому, что сайты, поддерживающие TLS, очень часто перенаправляют http-трафик на https, поэтому onebox должен продолжать работать, даже если пользователь, например, введет ссылку с http, а сайт перенаправит на https.

2 лайка