Ссылки, созданные в модальном окне Composer, ломаются, если содержат ' (%27)

Это немного странная ситуация, но она подчеркивает проблему со ссылками в сообщениях, которые связаны с текстом.

Если я:

  1. создам запрос в Data Explorer с переменной
  2. и назначу его группе
  3. перейду по URL через вкладку «Отчеты» группы
  4. добавлю переменную и запущу запрос
  5. скопирую URL и добавлю его в текст сообщения

то URL окажется поврежденным / нерабочим.

Что я наблюдаю:

  1. Вот пример такой созданной ссылки (извините, она приватная):
    https://ehealthforum.nz/g/HiNZ-staff/reports/128?params=%7B%22topic_id%22%3A%2234521%22%7D
  2. Когда я добавляю эту ссылку к какому-то тексту, что-то идет не так с кодировкой URL, и получается следующее:
    https://ehealthforum.nz/g/HiNZ-staff/reports/128?params=%257B%2522topic_id%2522%253A%252234521%2522%257D

И это просто ломает сайт!

Если я просто вставлю ссылку в сообщение, такого не происходит — это случается только тогда, когда я добавляю её в текст. Похоже, что что-то идет не так, когда система сталкивается с уже существующей кодировкой.

Отчёт @nathank был сосредоточен на конкретной узкоспециализированной задаче, которую он выполнял при столкновении с ошибкой. Однако сама ошибка никоим образом не ограничена Data Explorer. Опасаюсь, что слишком узкая направленность отчёта и использование нерелевантного тега data-explorer (правильным тегом был бы composer) могут затруднить понимание отчёта командой Discourse или привести к тому, что он не получит должного внимания.

Ошибка возникает повсеместно при следующих условиях:

При этих условиях URL всегда повреждается.

Шаги для воспроизведения:

  1. Откройте следующий URL в вашем браузере:
    https://en.wikipedia.org/wiki/Horncastle_boar%27s_head
    (обратите внимание, что URL содержит процентное кодирование символа '%27)
    :slightly_smiling_face: Открывается ожидаемая страница.
  2. Нажмите на значок «Ссылка» в редакторе поста.
    Откроется диалог «Вставить ссылку».
  3. Введите указанный выше URL в поле «Ссылка или тема» диалога.
  4. Нажмите кнопку «Вставить».

:bug: Целевая ссылка, добавленная по описанной выше процедуре, указана неверно:
https://en.wikipedia.org/wiki/Horncastle_boar%2527s_head

вместо правильного URL:
https://en.wikipedia.org/wiki/Horncastle_boar%27s_head

Ссылка не приведёт к нужной странице.

Это произошло потому, что символ % в процентном кодировании %27 был закодирован повторно, из-за чего % был заменён на собственное процентное кодирование %25. В результате корректное содержимое URL %27 было повреждено до %2527.

Платформа:

Операционная система

  • Windows 11

Браузер

  • Google Chrome 139.0.7258.128

Discourse

12c80d43adeb87cc18604ace0430a75d277d7662

Дополнительная информация:

Мне удалось воспроизвести ошибку на try.discourse.org в «безопасном режиме».


Ошибка возникает в любом режиме редактора.

3 лайка

Хорошо, я могу воспроизвести проблему, но исключительно при использовании модального окна для ссылок, верно? (Просто чтобы уточнить масштаб проблемы)

Если я вставлю её напрямую: https://en.wikipedia.org/wiki/Horncastle_boar’s_head; или вставлю URL поверх выделенного текста, всё работает как ожидалось.

РЕДАКТИРОВАНИЕ: Или… почти. Прямой URL декодируется: https://en.wikipedia.org/wiki/Horncastle_boar’s_head, что также неожиданно и предотвращает встроенное превью ссылки.

Спасибо за ваш отчёт!

3 лайка

Да, это верно.

1 лайк

Да, так и было — я не осознавал, что это более широкая проблема кодирования ссылок в модальном окне добавления ссылок в редакторе.

Я отредактировал заголовок и теги, чтобы отразить ваши ценные замечания и глубокий анализ!

2 лайка

Я думаю, что это было исправлено в


Результат:
[Horncastle boar's head](https://en.wikipedia.org/wiki/Horncastle_boar's_head)
:white_check_mark:

3 лайка

Да, я помню, что возился с этим, думаю, можно закрывать!

3 лайка

Эта тема была автоматически закрыта через 4 дня. Новые ответы больше не принимаются.