JAVA/SpringBoot 오류 해결

[Java / SpringBoot] Invalid CORS request 오류 해결 / nice 인증 모바일 오류

aieo 2024. 4. 20. 13:23
반응형

[오류]

 

nice 인증 API를 연결해서 모바일 인증을 하려고 하는데 처음 보는 에러가...

 

IOS 

 - safari / chrom / naver 앱 등 전체적으로 안됨

안드로이드

 - naver / chrom 앱

 

으로 설치 후 nice 인증을 하려고 하니까 인증이 통과가 안돼고 

jsp 파일이 그대로 다운돼서 소스가 보여지거나...

 

IOS로 테스트 했을 경우에는 에러가 보였음..

 

에러는 Invalid CORS request 처음 보는 에러였음.. API 설정을 잘 못한건줄 알고... 내 소스만 엄청 보고 고치다가..

gpt 열심히 물어봤지만.. 이상한 소리만.. 근데 그거 보면서 옛날에 Cross 어쩌고 보안 설정 한거가 기억남!

 

CORS 가 Corss-Origin Resource Sharing의 줄인말이였음..

 

CORS 설정 한 부분 확인해 보니 .. 문제 없어 보였으나.. 문제가 있는 중이었음

아래가 수정 전 소스.. 모든 CROSS_ORIGIN을 통과 시키는거 같았으나 아니였나봄

@Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/*").allowedOrigins(CROSS_ORIGIN);
        registry.addMapping("/*/*").allowedOrigins(CROSS_ORIGIN);
    }

 

[원인 설명]

CORS 에러중 내가 나고 있는 에러는

Invalid CORS request 403 에러... Cross-Origin Resource Sharing (CORS) 오류로 웹 브라우저에서 발생하는 보안 관련 오류

 

CORS 정책 위반

  •  웹 브라우저는 보안상의 이유로 동일한 출처(프로토콜)이 아닌 서버로부터 요청을 차단 Ex) HTTP요청 차단 등
  • 웹 페이지가 서로 다른 도메인 또는 포스트에서 호스팅 되고 해당 페이지에서 다른 도메인의 API 또는 Resource 접근 하려는 경우 CORS 정책 위반으로 에러...

GPT에서 자꾸 CORS 헤더 누락이라고 알려주기는 함.. 어디를 수정해야 할 지 찾지를 못함..

CORS 헤더 누락

  •  서버에서 CORS 관련 헤더를 설정하지 않거나 올바르게 설정하지 않은 경우, 웹 브라우저가 차단 시킴
  • 서버는 응답에 Access-Control-Allow-Origin 및 관련 헤더를 포함하여 클라이언트의 요청을 승인

결국 웹 브라우저는 실제 요청을 보내기 전에 사전 검사 요청을 보내서 요청이 허용 되어야 오류 안나고 잘 돌아가는거 같음...

 

[해결]

소스를 구글링해서 다 적용해보고 되는거 찾아서 수정함!

아래 소스로 수정하니 모바일에서 API 인증 잘 하고 통과 되긴 하나 좀 불안하게 통과 되긴 함

@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
    @Override    
        public void addCorsMappings(CorsRegistry registry) {
            registry.addMapping(("/**"))
            .allowedOrigins("*")
            .allowedMethods(
                    HttpMethod.GET.name(),
                    HttpMethod.HEAD.name(),
                    HttpMethod.POST.name(),
                    HttpMethod.PUT.name(),
                    HttpMethod.DELETE.name());
            }
        }
반응형