Discourse 임베드 실패 (referer 혼동)

안녕하세요,

MediaWiki 인스턴스에 Discourse를 임베딩하는 과정에서 이상한 문제가 발생했습니다.

위키 페이지를 기존 Discourse 주제에 연결하면 모든 것이 정상적으로 작동합니다:

window.DiscourseEmbed = { discourseUrl: 'https://forum.dev.tripleperformance.fr/',|
                          topicId: 18};

하지만 주제를 새로 생성하려고 하면 실패합니다:

window.DiscourseEmbed = { discourseUrl: 'https://forum.dev.tripleperformance.fr/',|
                          discourseEmbedUrl = 'https:' + mw.config.get('wgServer') + '/wiki/' + mw.config.get('wgPageName')};

iframe는 처음에 다음과 같이 로드됩니다:

<meta id="data-embedded" data-referer="https://wiki.dev.tripleperformance.fr/wiki/Sandbox">

그 후 30초가 지나면 (iframe 내의 meta http-equiv="refresh"로 인해) iframe이 다시 로드되며 다음과 같은 형태가 됩니다:

<meta id="data-embedded" data-referer="https://forum.dev.tripleperformance.fr/embed/comments?embed_url=https%3A%2F%2Fwiki.dev.tripleperformance.fr%2Fwiki%2FSandbox">

이 시점에 콘솔에 오류가 발생합니다:

Failed to execute 'postMessage' on 'DOMWindow': The target origin provided ('https://forum.dev.tripleperformance.fr') does not match the recipient window's origin ('https://wiki.dev.tripleperformance.fr').

이는 data-embedded 속성의 referer가 이제 부모 페이지가 아닌 자기 자신(self)을 가리키고 있기 때문일 것입니다. (새로고침의 시작점이 자기 자신이기 때문에 이는 예상되는 동작일 수도 있습니다.)

참고: 저는 Docker 등으로 인해 성능이 느린 개발 머신을 사용 중입니다. 레이스 컨디션(race condition) 같은 문제가 있는 것은 아닌지 궁금합니다…?

참고로, 위키 페이지 링크를 포함해 포럼에 게시글을 작성해 보았는데, 링크가 정상적으로 해석되어 임베드가 올바르게 표시되었습니다. 또한 컨테이너 내부에서 curl을 사용해 해당 URL에 접근해 보았는데, 이 역시 성공적으로 작동했습니다. 그런데 왜 새 주제가 바로 생성되지 않는지 이해가 되지 않습니다…

안녕하세요, Bertrand님!

아마도 이 문제는 이미 해결되었을 가능성이 높지만, 그렇지 않다면 오늘 추가된 유사한 증상을 보이는 문제의 수정 사항이 포함된 test-passed 브랜치의 코드를 시도해 보시는 것을 권장합니다.

해당 문제는 8월 25일에 이 문제를 보고하신 이후에 코드에 도입되었으므로, 정확히 동일한 문제일 가능성은 낮습니다.

그래도 문제가 여전히 해결되지 않았다면 해당 브랜치를 시도해 보시기 바랍니다.

감사합니다!

레오나도님, 안녕하세요.

감사합니다. 방금 시도해 보았지만, 결과는 크게 달라지지 않았습니다. 다만 이 유형의 통합 방식은 저희 플랫폼에 맞지 않아서(각 페이지마다 생성되는 것이 아니라, 소량의 코드를 통해 필요할 때 주제를 생성하는 방식을 선호합니다) 더 깊이 파고들지는 않았습니다.

그렇게 듣기엔 속상하지만, 시도해 본 것만으로도 의미 있었어요 :slight_smile:
감사합니다!