일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- CSS
- next.js 에러
- 알고리즘공부
- 정처기기출
- 코딩테스트
- 개발자
- 정보처리기사
- 프로그래머스
- mysql
- Redux-Toolkit
- 프로그래머스코테
- 알고리즘문제
- 코테공부
- 프로그래머스 코테
- 프로그래머스 레벨0
- 프로그래밍
- 코딩
- 프로그래머스 코딩테스트
- 프로그래머스코딩테스트
- 코테준비
- 프로그래머스 Lv.0
- 자바스크립트
- next.js
- 프로그래머스알고리즘
- 알고리즘스터디
- js
- 1일1코테
- 코테스터디
- 프로그래머스 알고리즘
- html
- Today
- Total
계발하는 개발자
[CORS 에러] Access to XMLHttpRequest at '주소A' from origin '주소B' has been blocked by CORS policy 해결 본문
[CORS 에러] Access to XMLHttpRequest at '주소A' from origin '주소B' has been blocked by CORS policy 해결
dev_genie 2023. 9. 6. 14:34에러
아파치 서버랑 vue.js dev 서버를 따로 띄워놓고 개발하다 '주소B(vue.js 포트)'로부터 '주소A(아파치 포트)'에 데이터를 요청했을 때 아래와 같은 에러가 떴다.
원인
보안상 웹 애플리케이션은 자신의 출처와 동일한 리소스만을 불러올 수 있는데, 위 경우처럼 다른 출처의 리소스를 불러올 때 위와 같은 CORS 에러가 나타난다.
이때 다른 출처라 함은, 프로토콜(http, https), 호스트(example.com), 포트(80,443 등)가 모두 같아야 하는데,
그렇지 않은 경우 브라우저는 이를 다른 출처로 간주하게 된다.
해결
여러 해결 방법이 있지만 내가 이용한 방법은 proxy 서버를 설정하는 방법이었다.
✅ 프록시(proxy) 서버란?
다른 네트워크 서비스에 간접적으로 접속할 수 있게 해 주는 서버를 말한다.
즉, 프론트단에서 CORS 에러 핸들링은 하는 것은 서버로 가기 전에 이 프록시 서버를 거쳐서 출처를 res와 같게 수정하고, 서버에 접근하도록 하는 것이다.
예컨대, 아래와 같이 냅다 다른 출처로 요청을 보낼 때 에러가 발생했었다면,
vue.config.js에 다음의 proxy 설정을 걸어두고 '/api' 경로로 서버에 요청을 보내면,
내가 자료를 받아오려는 서버측 경로와 같은 경로로 매칭되어 요청이 가게 되고, 그 결과 서버로부터 데이터를 받아올 수 있게 된다.
⬇️ 더 자세한 설명은 이전 포스팅 참고
이렇게 바꾸고도 여전히 콘솔창에 CORS 에러가 표시된다면 npm run serve로 개발 서버를 새로 실행한 후 확인하면 에러가 사라지고 서버로부터 받아온 데이터를 확인할 수 있다!!
위와 같이 프론트엔드에서 webpack-dev-server proxy 기능을 사용하면,
서버쪽 코드를 수정하지 않고도 빠르게 문제를 해결할 수 있다.🥰
'❗️Error' 카테고리의 다른 글
problems loading reference 'https //json.schemastore.org/package' 에러 해결법 (0) | 2023.09.08 |
---|---|
[Vue.js 에러] Component provided template option but runtime compilation is not supported in this build of Vue 에러 해결법 (0) | 2023.09.07 |
[PHP] json_encode 유니코드 한글 깨짐 현상 해결 (0) | 2023.09.06 |
[Vue3] 숨겨진 목록의 렌더링 막기 (0) | 2023.09.02 |
[Vue3] 마운트 후에 route params undefined 뜨는 현상 해결 (0) | 2023.09.01 |
dev_genie
@dev_genie
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!