IT/Nuxt & vue

[Nuxt] Axios 와 Proxy 사용 방법 (CORS)

2023. 2. 17. 16:08
오늘의 명언

“ 끝을 맺기를 처음과 같이 하면 실패가 없다. ”

- Laozi (노자)
목차
  1. CORS 란?
  2. Proxy 란?
  3. Nuxt 에서 Axios 및 Proxy 설정 방법
300x250

이번 포스팅은 NuxtJS에서 Axios 구성과 Proxy 설정 방법에 대해서 설명해보려고 합니다.

회사에서 백엔드와 작업할때 CORS 문제와 API 작업에서 삽질했던 부분을 정리하고자 합니다.


 

 

CORS 란?

Tip

Cross Origin Resource Sharing의 약자로, 현재 웹페이지 도메인에서 다른 웹페이지 도메인으로 리소스가 요청되는 경우를 말한다. 

 

  1.  HTTP , HTTPS 와 같은 프로토콜이 다른경우
  2.  domainA.com과 domainB.com처럼 도메인이 다른 경우
  3.  8080 포트와 3000 포트처럼 다른 경우

이처럼 Cross-Origin  이란 위 3가지 중 한 가지라도 다른 경우를 말합니다.

 

 

CORS가 없이 모든 곳에서 데이터를 요청할 수 있으면, 다른 사이트에서 본인이 개발한 사이트를 흉내 낼 수 있게 됩니다.

즉 개발한 사이트에 대해서 악의적으로 정보를 추출하거나 다른 정보를 입력하여 공격하는 등 보안에 대한 큰 이슈가 생깁니다. 그래서 브라우저에서 보호하고 필요한 경우에만 서버파트와 협의하여 여러 방법으로 보안을 강화합니다.

 

 

보안 이슈 같은 경우 서버파트와 같이 논의하여 진행하면 됩니다.

위와 같은 정보를 기억하시며 저희는 로컬에서 서버 api에 대해서 cors 이슈 없이

proxy를 적용하여 통신하는 방법을 진행합니다.

 


 

Proxy 란?

Tip

프록시 서버는 클라이언트에서 서버로 접속을 할 때직접적으로 접속하지 않고 중간에 대신 전달해 주는 서버
를 의미한다.

 

 

Nuxt 에서 Axios 및 Proxy 설정 방법

 

  • 진행하는 버전 내용입니다.  제가 진행할 때 이 버전을 사용하고 있는 거라, 지금 설명하는 내용과는 크게 작용되지 않습니다.
이름 버전
Nuxt 2.15.8
npm 8.12.1
node 16.15.1

 

  • Package.json
    필요한 라이브러리를 설치합니다.

 

 

  • nuxt.config.js

프로젝트 루트에 env폴더를 만들고. env.development 파일에다가 경로를 다 작성한 상태에서 (전부 URL 정보)

아래와 같이 구성합니다.


    
const envPath = `env/.env.${process.env.NODE_ENV}`
import dotenv from 'dotenv'
dotenv.config({path:envPath})
// ...생략
modules:[
'@nuxtjs/axios',
'@nuxtjs/proxy',
]
env:{
AXIOS_BASE_URL: process.env.AXIOS_BASE_URL, //front 도메인 주소
API_DEV:process.env.API_DEV, // backend 도메인 주소
API_DEV_CDN:process.env.API_DEV_CDN, // aws s3 cdn 주소
},
axios: {
proxy:true,
baseURL: process.env.AXIOS_BASE_URL,
proxyHeaders: false,
credentials: false
},
proxy: {
'/api/': {
target: process.env.API_DEV,
pathRewrite: { '^/api': '' },
changeOrigin: true
},
'/cdn/': {
target: process.env.API_DEV_CDN,
pathRewrite: { '^/cdn': '' },
changeOrigin: true
}
},

 

nuxt.config.js 설정에 대해서 설명을 이어가면, Proxy 모듈에서는 pathRewrite에 설정한  '/api/'라는 API 끝점에 target에 적은 URL로 모든 요청이 추가가 됩니다,  이제 사용법에 대해서 설명합니다.

 

  • proxy로 설정된 '/api/' 뒤에 서버 API 관련 URL을 작성하여 요청합니다.

    
export let GetUser = (params)=>{
return new Promise((resolve,reject)=>{
axios.get(`/api/users`,{params})
.then((data)=>{
if(data.status === 200)
{
resolve(data)
}
})
.catch((error)=>{
console.log(error)
reject(error)
})
})
}

 

 

  • CDN에서 이미지나 영상을 받아와서 사용할 때에는 Proxy 설정한 대로  '/cdn/' 뒤에 작성하여 사용하면 됩니다.

    
const url = `/cdn/${this.urlPath}`
// img tag
<img alt='image' :src="`${url}`"/>

 

 

 

Axios interceptors 사용하기

 

느린 개발자

프론트엔드 백엔드 학습정리 및 정보공유 블로그입니다.

stack94.tistory.com

 

반응형
저작자표시 비영리 변경금지 (새창열림)
잘못된 내용이 있으면 댓글 부탁드립니다. 감사합니다.
Stack_Shines
Stack_Shines
프론트엔드 백엔드 학습정리 및 정보공유 블로그입니다.
'IT/Nuxt & vue' 카테고리의 다른 글
  • [Nuxt] Vuetify 설치 방법 및 Material icon 설정
  • [Nuxt] Axios interceptors 사용하기
  • [Nuxt] 구글시트(google sheet)를 이용한 다국어(i18n) 자동화 처리
  • [Nuxt] 구글 로그인
Stack_Shines
느린 개발자
Stack_Shines
전체
오늘
어제
  • 분류 전체보기 102
    • 티스토리 10
    • IT 67
      • Library 3
      • JavaScript 3
      • TypeScript 3
      • Nuxt & vue 14
      • Nuxt3 6
      • React 4
      • NestJS 4
      • Express 9
      • CI CD 1
      • WebGl 4
      • docker 6
      • MAC 2
      • 디자인패턴 1
      • Error 4
      • 홈서버 3
    • 프로젝트 1
    • 오늘의 회고 2
    • 맛리뷰 7
    • 다이어트 5
    • 여행 1
    • 끄적끄적 일상 6
    • 생활 정보 3

인기 글

최근 글

hELLO · Designed By 정상우.
Stack_Shines
[Nuxt] Axios 와 Proxy 사용 방법 (CORS)
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.