앱의 app.yml 파일에 다음 설정을 추가했습니다.
DISCOURSE_ENABLE_CORS: true
DISCOURSE_CORS_ORIGIN: '*'
테스트 중에 변수를 제거하기 위해 임시로 '*'를 설정했습니다. 또한 명시적으로 URL을 설정하는 것도 시도해 보았지만 효과가 없었습니다.
그러나 위와 같이 설정했음에도 불구하고 여전히 다음과 같은 오류가 발생합니다.
인용구
요청한 리소스에 ‘Access-Control-Allow-Origin’ 헤더가 존재하지 않습니다.
배경: Unity 기반의 iOS 클라이언트가 일부 Discourse API와 상호작용하며, 테스트에는 WebGL을 사용합니다. 특히 WebGL을 실행하는 브라우저에서 테스트할 때 이 문제가 발생합니다.
또한 Postman 테스트를 통해 모든 요청의 응답 헤더에 ‘strict-origin-when-cross-origin’ Referrer-Policy가 설정되어 있는 것을 관찰했습니다.
도움을 주시면 감사하겠습니다. 감사합니다!
IAmGav
(Gavin Perch)
2
cors origins 설정은 admin > settings > security에서 관리됩니다
app.yml에는 DISCOURSE_ENABLE_CORS:만 필요합니다
Falco
(Falco)
5
여기에서 와일드카드를 지원하는지 확실하지 않습니다. 실제 도메인으로 시도해 볼 수 있을까요? 몇몇 사이트에서 도메인이 구성된 CORS 설정을 사용 중인데, 잘 작동하는 것으로 보입니다.
IAmGav
(Gavin Perch)
6
저도 제 사이트 중 하나에서 이렇게 설정해 두었는데, 실제로 작동합니다.
도메인으로 시도해 보았지만 실패했습니다. 환경 변수가 올바르게 설정되어 있는지 확인할 방법이 있을까요? (또는 앱 재시작 시 CORS가 재설정되었지만 요청을 다시 보내지 않았는지 확인하는 방법 등, 디버깅할 수 있는 방법을 고민해 보고 있습니다.)
혹시 도움이 될까 봐 CORS 설정을 처리하는 코드 부분을 공유합니다.
nginx 액세스 로그를 확인해 보니 OPTIONS 호출이 404를 반환하고 있으며(이후 GET 호출에서 오류가 발생함), 오류가 발생하기 전에 이 호출이 먼저 실행되고 있습니다.