Composer 링크 모달에서 생성된 링크에 ' (%27)이 포함되어 있으면 링크가 깨집니다

이것은 다소 기이한 작은 문제이지만, 텍스트와 연관된 게시물 내 링크에 존재하는 문제를 보여줍니다.

제가 다음 단계를 수행하면:

  1. 변수가 포함된 데이터 탐색 쿼리를 생성하고
  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에 퍼센트 인코딩된 콘텐츠가 포함된 경우
  • 링크가 “링크 삽입” 대화 상자를 통해 게시글에 추가된 경우

이러한 조건에서는 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

대신 잘못된 URL이 표시됩니다.

이 링크는 의도된 페이지로 연결되지 않습니다.

이것은 퍼센트 인코딩 %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, 이는 또한 예상치 못한 동작이며 인라인 원박싱(inline oneboxing)을 방지합니다.

리포트해 주셔서 감사합니다!

3개의 좋아요

네, 맞습니다.

1개의 좋아요

맞아요. 제가 컴포저 링크 모달의 더 넓은 범위에서 발생한 링크 인코딩 문제였다는 사실을 모르고 있었습니다.

말씀해 주신 좋은 의견과 조사 내용을 반영하여 제목과 태그를 수정했습니다.

2개의 좋아요

FIX: stop double encoding URLs when pasting via link UI - Pull Request #34834 - discourse/discourse - GitHub 에서 이 문제가 수정되었을 것으로 생각합니다.


결과는 다음과 같습니다:
[Horncastle boar's head](https://en.wikipedia.org/wiki/Horncastle_boar's_head)
:white_check_mark:

3개의 좋아요

네, 이거 만져본 기억이 나요. 이 이슈는 닫아도 될 것 같아요!

3개의 좋아요

이 주제는 4일 후 자동으로 닫혔습니다. 더 이상 새 답변을 작성할 수 없습니다.