That was!! You save my day… Thanks a lot!
Could be wrong, but doesn’t this open up a x-site security vulnerability? See:
I don’t know much in these matters, but here is my reasoning:
- “same site cookie” is enabled by default, so it is probably much better this way.
- “same site cookie” can be disabled, so it’s probably not a security hole by itself, rather a weakness that could be exploited in conjunction with others. Disable it at your own risks.
Anyone understands why disabling same site cookie enforcement prevents users from log in within an iframe?
Discourse를 iframe에서 공식적으로 지원해 주실 수 있을까요?
수정: 어, 죄송합니다. 2년 뒤에 글을 올리고 있다는 걸 몰랐습니다.
이것이 지원될 가능성은 매우 낮습니다.
Jeff,
첫째: Discourse는 정말 훌륭하며, 만들어 주셔서 감사합니다!
둘째: iframe으로 임베드된 Discourse에서 발생할 수 있는 구체적인 문제점이나, 원리적으로 영향을 미칠 수 있는 제한 사항에 대해 어디에 문서화가 되어 있는지 궁금합니다.
감사합니다!
아담, 오랜만이네요. 여기서 답변을 시도해 보겠습니다.
<iframe>를 사용하는 것은 오류가 매우 빈번하며, Discourse를 사용하기 어렵게 만들고 추적하기 어려운 버그로 가득 차게 만듭니다. 또한 Discourse 안으로 "창(window)"을 여는 경향이 있어, 큰 토픽을 스크롤하는 것과 같은 기능이 깨지는 문제가 발생합니다. 기본적으로 iframe은 Discourse의 많은 기능을 샌드박싱(격리)합니다.
iframe 사용을 고려하고 있다면, 포럼에 나머지 사이트/앱/포털과 일치하는 헤더(네비게이션 링크 포함)를 추가하는 것이 좋은 방법입니다. 사용자가 포럼으로 이동하면 비슷한 네비게이션을 보게 되지만, URL은 다른 곳에 호스팅된 것으로 변경됩니다. 헤더에서 포럼이 아닌 링크를 클릭하면 다시 사이트/앱/포털로 돌아갈 수 있습니다.
도움이 되길 바랍니다.
답변 주셔서 감사합니다!
기대되는 구체적인 문제점들이 무엇인지, 또는 iframe의 컨텍스트가 심각한 문제를 일으키는 구체적인 이유가 무엇인지 공유해 주실 수 있을까요?
이 경우 "window"가 무엇을 의미하는 것인가요?
우리는 메인 토론 영역에 대해 이렇게 할 계획이지만, 이 특정 사용 사례에서는 문제가 됩니다. 우리는 온라인 코스를 운영하고 있습니다. 각 코스는 우리 사이트의 특별하게 테마가 적용된 비공개 영역에서 진행됩니다. 코스 콘텐츠에는 수업 자료, 비디오, 일정, 토론 영역이 포함됩니다. 학생들이 코스를 완료하면, 코스 코호트(동기)의 다른 참여자들과 시작한 토론을 계속할 수 있습니다. 또한 일반 코스 동문 토론 그룹에도 추가되며, 더 큰 공개 토론 포럼에도 초대받게 됩니다.
우리의 사용 사례에서, 여기 제안된 접근 방식에는 두 가지 문제가 있습니다:
-
우리 사이트의 코스 영역 테마(헤더, 스타일, 사이드바 등)는 일반적으로 Discourse에 사용하려는 테마와 다릅니다. 이를 수용하려면 카테고리별로 다른 스타일과 테마 콘텐츠를 사용할 수 있어야 하는데, 이는 가능해 보이지 않습니다.
-
현재(비-Discourse) 구현에서 코스 토론은 스타일, 헤더, 사이드바 메뉴를 포함합니다. 이는 학생들이 코스 콘텐츠에 집중하고 토론, 수업 자료, 비디오 등 사이에서 부드럽게 전환할 수 있는 낮은 방해요소 공간입니다. 제 판단으로는 Discourse를 수정하여 이러한 몰입형 환경을 재현하는 것은 어려울 것입니다. 만약 이것이 사실이 아니라면, 반대의 사실을 알게 되어 기쁠 것입니다!
도움 주셔서 감사합니다,
Adam
가능합니다. body 요소에는 현재 카테고리를 나타내는 클래스가 부여되므로, SCSS에서 중첩 셀렉터를 사용하여 테마를 쉽게 적용할 수 있습니다.
일반적으로 강의 영역에 Discourse 위젯을 몇 개 추가하는 것을 권장합니다. 예를 들어 다른 사이트에 Discourse 주제 목록 임베딩 문서에 설명되어 있는 지원되는 iframe 주제 목록 기능이 있습니다. 이렇게 하면 학생들이 현재 강의 페이지와 관련된 최근 토론 목록을 볼 수 있으며, 다른 브라우저 탭에서 클릭 한 번으로 해당 토론에 참여할 수 있습니다!
Falco님,
답장 주셔서 감사합니다. 그리고 늦은 답변 양해 부탁드립니다.
불행히도 저희의 코스 구현 방식은 상당한 조정이 필요할 정도로 복잡한데, 커스텀 CSS 스코프만으로는 이를 수용하기 어렵습니다. 예를 들어, 헤더 메뉴에는 현재 사용자가 등록한 코스의 드롭다운이 포함되어 있습니다. 이는 로그인한 사용자를 기준으로 WP 데이터베이스에서 동적으로 생성되므로, Discourse에서 이를 재현하기는 어려울 것입니다.
코스 영역의 사이드바 메뉴에는 특정 코스에 고유한 다양한 유형의 코스 콘텐츠로 연결되는 링크가 포함되어 있습니다. 제가 이해하기로는, Falco님이 설명하신 방식이 작동하려면 모든 코스의 모든 콘텐츠가 테마에 하드코딩되어야 하고, 그 후 body 클래스에 따라 CSS로 표시하거나 숨겨야 합니다. 맞습니까?
작동할 수 있는 한 가지 접근 방식은 Discourse에서 클라이언트 측 JS를 사용하여 저희 API에서 콘텐츠를 가져와 표시하는 것입니다. 다른 서버에 XmlHttpRequest를 수행하는 커스텀 스크립트를 추가할 수 있습니까? 이것이 불가능하다고 생각되는 이유가 있습니까?
아직도 이 질문에 대한 답변을 기다리고 있습니다.
감사합니다!
네, 가능합니다. 다만 페이지 렌더링을 차단하지 않도록 주의하세요.