React로 Discourse API에 액세스하고 싶습니다.
다음과 같은 오류가 발생합니다:
localhost/:1 Access to XMLHttpRequest at 'https://community.oppkey.host/posts.json' from origin 'http://localhost:3000' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
Discourse 관리자 패널에서 설정한 CORS 오리진 설정입니다.
Discourse 서버의 /var/discourse/containers/app.yml 파일에는 다음과 같은 내용이 있습니다.
Discourse API를 가져오기 위해 다음처럼 시도하고 있습니다.
export const DiscoursePanel = () => {
const [ allData, updateData ] = useState([]);
useEffect(() => {
const apiEndPoint = 'https://community.oppkey.host/posts.json';
/* const apiEndPoint = 'https://jsonplaceholder.typicode.com/posts'; */
console.log("trying to get API on " + apiEndPoint);
axios
.get(apiEndPoint)
.then((res) => {
const currentData = res.data;
updateData(currentData);
console.log("got api");
console.log(currentData);
})
.catch((err) => console.log(err));
}, []);
가짜 데이터를 제공하는 외부 서버를 사용하면 React 코드는 정상적으로 작동합니다.
일반적으로 CORS와 React가 어떻게 작동하는지 이해하지 못하고 있으므로, 도움이 필요합니다.
Discourse 서버에서 API 호출을 React에 연결하기 위해 사용하는 다른 REST API 서버로 중계하는 API 프록시 서버를 작성하여 작동하도록 만들었습니다. 작동하긴 하지만 속도가 느립니다. React에서 Discourse API 엔드포인트로 직접 API 호출을 보내고 싶습니다.




