안녕하세요,
관리자만 실행할 수 있도록 제한된 스크립트를 게시글에서 실행하는 방법이 있을까요?
예전에 설정을 시도해 보았지만 PuTTY에서 사이트가 충돌하여 멈추는 문제가 발생했습니다.
수요일 잘 보내세요.
올레
안녕하세요,
관리자만 실행할 수 있도록 제한된 스크립트를 게시글에서 실행하는 방법이 있을까요?
예전에 설정을 시도해 보았지만 PuTTY에서 사이트가 충돌하여 멈추는 문제가 발생했습니다.
수요일 잘 보내세요.
올레
몇 년 전에 이 주제에 대한 게시글이 있었지만, 이 방법을 찾을 수 있기를 희망합니다.
https://meta.discourse.org/t/adding-a-javascript-in-a-post/130019/3
올레
@Olle11 무엇을 시도하고 있는지 좀 더 자세히 설명해 주시면 도움이 될 수 있습니다.
Composer를 통해 즉석에서 이 기능을 허용하는 방법은 없지만, 사용 사례에 따라 우회할 수 있는 방법이 있을 수 있습니다.
예를 들어, Poll 플러그인은 기본적으로 게시물(Post) 내에서 JavaScript를 실행합니다(그 외에도 다른 기능도 수행하지만).
HTML이나 React를 통해 스크립트를 실행하여 상위 게시물에 위젯을 실시간으로 표시할 수 있기를 희망합니다.
예를 들어, HTML 위젯 스크립트를 통해 특정 도시의 실시간 날씨를 보여주는 위젯 같은 경우입니다.
이러한 용도에 대해 투표(Poll) 플러그인을 사용할 수 있을까요?
감사합니다.
올레
아니요, 그건 그냥 예시로 든 거예요. 소스 코드를 확인해 보세요.
JavaScript를 다른 곳에 호스팅할 수 있다면 iFrame을 사용해 볼 수 있습니다.
밀착된 통합을 원하신다면 EmberJS를 사용하는 것을 고려해 보셔야 합니다.
예를 들어 상단 배너가 아니라 게시글 안에 콘텐츠를 포함시키고 싶다면, 이 답변이 아마도 가장 접근성이 좋을 것입니다.
예를 들어, CodePen의 프론트 페이지 항목 중 하나를 선택하여(우리의 allowed_iframes에 포함되어 있기 때문) 아래에 임베드했습니다:
필요한 스크립트는 X-FRAME-Options: DENY로 인해 iframe을 허용하지 않는 것 같습니다.
Discourse에서 실행되는 스크립트를 허용하기 위해 다음과 같은 구성을 적용해 보려고 합니다. @merefield @supermathie?
App.yml:
DISCOURSE_ALLOW_UNSAFE_HTML: true
CSP를 위한 Nginx 구성:
add_header Content-Security-Policy “script-src ‘self’ ‘https://webadress.com’ ‘unsafe-inline’ ‘unsafe-eval’;”;
Nginx 구성을 추가하려고 하는데, curl로 확인해 봤을 때 'unsafe-inline’와 https가 CSP에 표시되지 않습니다. 'unsafe-eval’은 관리자 화면을 통해 추가됩니다.
수정: 안전하지 않습니다
Discourse가 이를 방지하기 위해 마련한 보호 기능을 제거하는 것은 매우 나쁜 생각입니다.
그래서 모두가 이 작업을 수행하는 권장 방법을 안내하려고 하는 것입니다.
페이지에 스크립트를 추가하려면 테마 또는 테마 구성 요소를 사용해야 합니다.
테마 또는 테마 컴포넌트를 사용하여 게시물에 스크립트를 추가할 수 있나요?
CSP에 'unsafe-inline’를 포함하여 스크립트가 작동하도록 하려면 어떻게 해야 하나요?
가능합니다. 스크립트 자체는 게시글 외부에 있어야 하거나, 게시글의 특정 부분을 장식하는 용도로 사용할 수도 있습니다.
구체적인 내용이 없기 때문에 정확히 무엇을 원하시는지 파악하기 어렵습니다.
이것은 나쁜 생각이며 그렇게 하지 마시기 바랍니다.
CSP와 app.yml에 추가한 내용에 관하여, 안전하지 않기 때문에 사이트에서 unsafe_html: true, nginx 볼륨, 그리고 CSP를 위한 nginx 구성을 제거할 것입니다.
아마 테마 컴포넌트가 작동할 수도 있겠네요, 음.
구체적으로 어떤 스크립트를 실행하시길 원하시나요?
어디에서 실행하시길 원하시나요?
특정 게시물에 적용하나요? 아니면 페이지의 다른 위치에 적용하나요? 어떤 매개변수를 전달해야 하나요? 모든 게시물에서 다른가요? 카테고리인가요?
Iframe이 작동할 수 있습니다. CSP와 unsafe_html을 업데이트해야 합니다. CSP와 제가 시도한 다른 솔루션들은 안전하지 않기 때문에 웹사이트가 안전해야 하니까요.
피드백 감사합니다. 더 나은 해결책을 찾을 때까지는 일단 iframe으로 진행해도 될 것 같습니다.
스크립트를 살펴보면 전역적으로 실행할 수 없습니다. 옵션을 로드하는 특정 위치에 로드해야 합니다.
간단한 TC를 만들었습니다: GitHub - Arkshine/discourse-tradingview-chart · GitHub
옵션 변경을 쉽게 하려면 사이트에서 옵션을 복사하여 [wrap]..[/wrap] 태그 안쪽에 직접 붙여넣을 수 있습니다.
기본적으로 종횡비를 16/9로 강제하며, 모든 가로 공간을 차지하고 높이는 자동으로 설정됩니다. 스크립트에서는 너비/높이를 지정할 수도 있으며, 이 경우에도 정상적으로 작동합니다.
show_popup_button: true 옵션 사용을 권장합니다. 이를 통해 차트를 새 창에서 전체 화면으로 볼 수 있는 방법을 제공합니다.

두 가지 옵션을 추가했습니다:
죄송하지만
하나만으로는 . . . 를 전달하기에는 부족합니다.
형, 이거 정말 대박이네.