preflight

IKNOW·2023년 10월 11일
0

web

목록 보기
1/3

내가 이해한대로 쉽게 설명하자면 브라우저가 서버한테 이 서버 안전한 서버 맞나요? 라고 물어보는 요청이다.
쿠키같이 민감한 정보를 전송할 때 브라우저는 "아 이 요청 너무 위험한 요청같은데..."라고 생각하게 되고 요청을 하기 전에 서버한테 "혹시 cors는 설정되어 있나요?" 라고 물어보는 거라고 생각하면 됨.
사실 평소에는 cors config를 통해서 cors를 해결했는데, cors에는 POST, GET, PUT, DELETE 매핑만을 허용해 줬었다.
근데 이 프리플라이트는 OPTION 매핑이고 OPTION매핑은 약간 보안적으로 위험한 매핑이기 때문에 보통 허용해 주지 않지만, 이 OPTION매핑인 프리플라이트가 정상적으로 우리 서버에 들어와야 하기 때문에 SpringSecurity를 통해 "혹시 프리플라이트세요?"라고 물어보고 맞으면 "OPTIONS라도 들어오세요."
라고 하면 된다.

코드로 확인하면 CorsUtils.isPreFlightRequest(request)가 프리플라이트세요? 라고 물어보는거고 true면 uri가 ExcludeUri인지 여부와 관계없이 doFilter로 다음 필터로 넘어 갈 수 있다.

protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) {
	String uri = request.getRequestURI();
    if(CorsUtils.isPreFlightRequest(request) || jwtUtil.isTOkenCheckFilterExcludeUris(uri)) {
    	filterChain.doFilter(request, response);
        return ;
    }
    ...
}
profile
조금씩,하지만,자주

0개의 댓글

관련 채용 정보