티스토리 뷰

Web/Front - Vue

프록시 설정

잉_민 2022. 2. 14. 16:17

Proxy 설정

백엔드의 CORS를 피하기 위해 proxy를 설정해서 사용 한다.

참고: https://velog.io/@skyepodium/vue-proxy-사용하기

 

vue proxy 사용하기

vue cli 3.x 버전 이상에서 웹팩 개발서버를 이용해서 프록시 요청을 보내봅시다.

velog.io

  • cors

교차 출처 리소스 공유 (CORS) - HTTP | MDN

 

교차 출처 리소스 공유 (CORS) - HTTP | MDN

교차 출처 리소스 공유(Cross-Origin Resource Sharing, CORS)는 추가 HTTP 헤더를 사용하여, 한 출처에서 실행 중인 웹 애플리케이션이 다른 출처의 선택한 자원에 접근할 수 있는 권한을 부여하도록 브라

developer.mozilla.org

.env 파일 생성

환경설정을 담당하는 .env파일을 생성 한다.

/.env

NODE_ENV=production
VUE_APP_SERVER=http://localhost:3000

vue에서 .env파일의 환경설정을 읽기 위해서는 반드시 VUE_APP_라는 접두사를 사용해야 한다.이는 process.env.VUE_APP_를 통해 추출할 수 있다.

주의 VUE_APP_SERVER에는 백엔드 서버의 값을 설정해야 한다.

환경변수 설정.

.env : 환경설정

백엔드 서버를 VUE_APP_SERVER =주소

이런식으로 불러옴.값이 추출된다.

vue.config.js 파일 생성

다음과 같이 vue.config.js파일을 생성 한다.

/vue.config.js

const { VUE_APP_SERVER } = process.env
//호출. .env에있는 뷰앱서버 '주소'

//모듈 익스포트한다
module.exports = {
  devServer: {
    proxy: {
      '/serverApi': {
        target: VUE_APP_SERVER,
        changeOrigin: true,
        pathRewrite: { //****정규식표현
          '^/serverApi': ''  //없애준다.
        }
      }
    }
  }
}

/serverApi라는 URL이 입력되면 pathRewrite에 의해 ''로 변경된다

.예) 입력 정보: /serverApi/users ⇒ 프록시 처리: <VUE_APP_SERVER>/users

⇒ 최종 호출: http://localhost:3000/users

주의!! vue.config.js파일의 프록시 처리는 개발PC에서만 동작한다.실제 도커를 통한 nginx에서는 /etc/nginx/conf.d/default.conf파일에서 프록시 처리를 해 주어야 한다.


예시

axios 에서 호출 방법

Store파일의 action에서 axios를 활용해 백엔드 서버를 호출할때 /serverApi를 작성하면 proxy를 통해 호출이 된다.

(예) /src/store/models/department.js

...
  actions: {
    // 부서 리스트 조회
    actDepartmentList(context, payload) {
      /* RestAPI 호출 */
      api.get('/serverApi/departments').then(response => {
        const departmentList = response && response.data
        context.commit('setDepartmentList', departmentList)
      })
    }
  }
...

호출 URL은 proxy에 의해 다음과 같이 변경 된다./serverApi/departments ⇒ http://localhost:3000/departments

'Web > Front - Vue' 카테고리의 다른 글

Vue_기본함수,기능  (0) 2022.03.22
Vue_router설정  (0) 2022.03.22
Vue_create 오류  (0) 2022.02.15
Vue_화면 분할  (0) 2022.02.14
Vue_시작하기  (0) 2022.02.14
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
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
글 보관함