안녕하세요,
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) 같은 문제가 있는 것은 아닌지 궁금합니다…?