API 문서에 따르면, 피드에 액세스하려면 인증을 위해 “API-Key”와 “Api-Username” 헤더가 필요합니다. 그러나 사전 검사(Pre-flight check)에서는 허용된 값으로 “User-API-Key”와 “User-Api-Client-Id”가 표시되고 있습니다.
브라우저를 통하지 않고 호출하면 예상대로 동작합니다. 하지만 브라우저를 통해 호출하면 서버가 “User-API-Key”와 “User-Api-Client-Id”가 필요하다고 주장합니다.
Postman으로 기본 연결을 확인했는데, 이 경우 discourse 문서에 명시된 대로 동작합니다.
문서에 있는 헤더를 전달하면 브라우저가 사전 검사(Pre-flight check)로 인해 요청을 차단하고 Access-Control-Allow-Headers CORS 오류가 발생합니다.
서버가 허용하는 헤더를 전달하면 “not authorised error”가 발생하는데, 이는 애플리케이션이 다른 이름의 값을 기대하기 때문입니다.
docker 설정에 헤더를 추가해 보았지만 적용되지 않는 것 같습니다. 설정에는 CORS가 활성화되어 있고 origin이 '*'로 지정되어 있습니다.
@david SSO를 사용 중이며, 사용자가 앱에서 로그아웃할 때 Discourse에서도 해당 사용자를 로그아웃시키고 싶습니다. 현재 '관리자 API’를 사용하여 /users/by-external/${id}.json을 통해 사용자 ID를 가져오고 있지만 CORS 오류가 발생합니다. 이 로그아웃 과정만을 위해 모든 사용자에게 '사용자 API’를 활성화하고 싶지 않은데, 어떻게 하시겠습니까?
안녕하세요 @david, 백엔드 솔루션을 구현해 보았지만 https://example.com/users/by-external/{EXTERNAL_USER_ID}.json?api_key={DISCOURSE_API_KEY}&api_username=system을 호출하면 로그인 페이지의 HTML이 반환됩니다(로그인 페이지로 리다이렉트되는 것으로 추측됩니다). login required 설정이 활성화되어 있으며, 이 설정을 비활성화하면 올바른 JSON 응답을 받을 수 있습니다. 해당 설정은 활성화된 상태로 유지하고 싶은데, 무슨 문제가 있는지 아이디어가 있을까요?