[Flutter] SpringBoot CORS설정

김지훈·2023년 9월 5일

꿀정보

목록 보기
4/5

*SpringBoot로 API 서버 구축 후 Flutter로 가져오기

SpringBoot로 DB기반 API서버를 만들고 Flutter로 가져와서 내용을 뿌려주도록 구현했다.

다하고 힘차게 실행을 시켰으나..

Access to XMLHttpRequest at 'http://localhost:1000/mypage/org/1' from origin 'http://localhost:60229' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

어림도없지 바ㅡ로 CORS문제 직면.

해결을 위한 몇가지 방법들이 있다.

  • chrome.dart파일 수정하기
  • CrossOrigin 어노테이션 추가하기
  • HTTP 응답에 Access-Control-Allow-Origin 헤더 추가하기
  • chrome.dart파일 수정

    실패.

    CrossOrigin 어노테이션 추가

    @CrossOrigin(origin = "https://localhost:1000")

    는 또실패.

    HTTP 응답에 Access-Control-Allow-Origin 헤더 추가

        @GetMapping("/dntresult")
        public List<Donation> myDnt(@PathVariable("userid") Long userid, HttpServletResponse response) {
            // Access-Control-Allow-Origin 헤더를 추가
            response.setHeader("Access-Control-Allow-Origin", "*");
            
            return mypageService.myDnt(userid);

    이러니까 성공했다.

    그런데 이 방법은 한가지 문제가 있다.
    귀찮다. 하나하나 다 써줘야한다.

    한번에 할 수 있는 방법을 찾았다.

    CorsConfig클래스 추가

    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 CorsConfig implements WebMvcConfigurer {
    
        @Override
        public void addCorsMappings(CorsRegistry registry) {
            registry.addMapping("/**") // 모든 엔드포인트에 대해 CORS 정책 적용
                    .allowedOrigins("*") // 모든 도메인에서의 요청 허용
                    .allowedMethods("GET", "POST", "PUT", "DELETE"); // 허용할 HTTP 메서드 지정
        }
    }
    

    config 패키지에 CorsConfig 클래스를 추가했다. (@Configuration필수)

    이거 한방으로 끝났다.

    굳.

    0개의 댓글