CORS error
3077
投稿した質問数 2
CORS error를 피하기 위한 방법으로
devServer: {
proxy: ".....",
}
이렇게 프락시 서버를 설정해서 피했는데, 근데 이것은 Development 모드 일때만 적용되는 된다고 생각합니다.
실제 Production에서는 dist 만 배포될텐데
Production 에서는 어떤 해결방법이 있나여???
回答 1
1
안녕하세요 새벽에 잠결에 답변을 달았다가 삭제하고, 아침에 다시 답변하고 있습니다.
일단 이 강좌가 서버를 다루지 않은 클라이언트 강좌이다 보니, 서버를 배제하고 할 수 있는 방법을 보여주게 되어서 vue.config.js에 devServer에 proxy를 설정하였습니다.
질문자님께서 말씀하신 것 처럼, 이렇게 설정할 경우 개발환경에서는 정상 수행이 되지만, 운영환경에서는 실행이 되지 않게 됩니다.
그래서 CORS를 정확히 해결하려면 결국 서버에서 처리를 해줘야 합니다. 이 강좌가 Vue 강좌이지만 잠깐 서버쪽 설정을 말씀드리도록 하겠습니다.
API를 요청받는 쪽인 서버에서 서버 헤더 중 Access-Control-Allow-Origin이라는 헤버 프로퍼티에 CORS를 허용해 줄, 즉 클라이언트 도메인 주소를 등록하여 해결 할 수 있습니다.
Node.js를 예로 설명 드리도록 하겠습니다.
Node.js의 경우 cors라는 모듈을 활용하여 쉽게 해결을 할 수 있습니다.
Node의 app.js에 아래와 같이 cors 설정을 할 수 있습니다.
그리고 Vue에서는 다음과 같이 처리를 해줘야 합니다.
vue.config.js에 devServer에 설정된 proxy를 제거합니다.
axios를 import한 소스파일에서(강좌에서는 mixins.js)에서 아래와 같이 추가를 해야 합니다.
이렇게 설정하시면, proxy 서버 없이 처리가 가능하게 됩니다.
그리고 네이버 아이디로 로그인 같은 경우는 자체적으로 구축한 서버가 아니라 외부 서버이기때문에, CORS문제를 운영에서 피하기 위해서는 Vue와 같은 클라이언트에서 API를 호출하는 것이 아니라 서버에서 호추를 해야 합니다. 네이버 아이디로 로그인 API는 서버에서 호출하도록 Node.js와 같은 서버 프로그램용 API를 제공하고 있습니다.
부득이하게 클라이언트로 운영에서 처리를 해야 한다면, window.location.href로 토큰 삭제 URL를 실행하면, CORS 문제 없이 토큰이 삭제가 됩니다. 하지만 이 역시도 좋은 방법이 아니기 때문에 운영에서는 서버 환경에서 처리 하는 것을 추천 드립니다.
본 강좌가 node.js 같은 서버를 다루지 않다 보니, 강좌 내에서 클라이언트에서 처리 하도록 proxy를 이용한 점 양해 부탁드립니다.
그리고 이렇게 좋은 질문을 해주셔서 진심으로 감사드립니다.
google login 를 따라하다가 오류 발생
0
937
1
Expected indentation of 2 spaces but found 4 오류
0
874
1
카카오 로그인 에러가 뜨세요
0
434
1
Multi-word질문드립니다.
0
234
2
설치 이후 npm run serve 화면 안나옴
0
651
1
vue cli 문제
0
361
2
요청드립니다.
0
160
0
eslint 에러발생
0
1384
1
main.js 질문드립니다.
0
228
1
vuex-persistedstate 는 동작 자체를 안하네요?
0
371
1
15강.조회화면 저장실습 - params안됨
0
286
1
array 넘겨주기
0
164
0
유튜브 4시간 강의와는 어떤 차이가 있을까요?
0
286
1
prefetch기능
0
738
1
테이블 list 랜더링 되지 않습니다.
0
254
1
펑션을 한 depth 더 들어가면 $호출이 안되는 이유가 뭘까요?
0
288
2
name 값이 없는 경우 오류
0
209
1
vue config 파일 문의
0
346
1
실무 레벨에서 공통코드(기준정보)는 어떻게 구현 할까요?
0
327
1
강의자료가 따로 있나요?
0
362
1
computed 대신 직접 this.$store.state.user 사용은 안되나요?
0
171
0
lazy-load의 성능에 대해서 질문이 있습니다.
0
205
0
Prefetch 관련 질문 드립니다.
0
143
1
저는 왜 하나의 단어가 지정이 안될까요?
0
313
1

