Spring boot – VSCode CORS 문제 해결 / react Axios 통신




CORS




Axios



프로젝트 생성




Spring boot 설치부터 프로젝트 만들기 / 실행까지!


axios 라이브러리 설치


JSX
npx create-react-app 프로젝트이름
npm install axios



JSX
// react 코드
import './App.css';
import React, { useEffect, useState } from 'react';
import axios from "axios"

function App() {
   // 통신 받은 결과 값 변수
  const [val, setValue] = useState(null);

  // 화면이 실행 될때 한 번만 실행하기
  useEffect(()=>{

  // axios 통신
    axios("/hello")
    .then(res => {
      console.log(res.data)
      setValue(res.data)
    })

  },[])
  
  return (
    <div className="App">
      {val}
    </div>
  );
}

export default App;


Java
package com.hyehwi.app.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {

	@RequestMapping("/hello")
	public String hello() {
		return "성공~!";
	}
}



react에서 해결하는 방법(setupProxy.js 생성)


JSX
const { createProxyMiddleware } = require('http-proxy-middleware');

module.exports = function(app) {
  app.use(
    '/', // 프론트엔드에서 요청하는 백엔드 API의 경로
    createProxyMiddleware({
      target: 'http://localhost:8089', // 백엔드 서버의 주소
      changeOrigin: true, // 요청 헤더의 호스트를 대상 서버로 변경
    })
  );
};





Spring boot에서 CORS해결




Java
package com.hyehwi.app.config;

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class WebConfig implements WebMvcConfigurer{
	
	@Override
	public void addCorsMappings(CorsRegistry registry) {
		registry.addMapping("/**")
		 	.allowedOrigins("http://localhost:3000")
		 	.allowedMethods("GET", "POST", "PUT","DELETE")
		 	.allowedHeaders("*")
		 	.maxAge(3600);
	}
}



JSX
axios("http://localhost:8089/hello")
    .then(res => {
      console.log(res.data)
      setValue(res.data)
    })


결과 확인