SPRING + AWS ELB HTTP -> HTTPS CORS

Sangwoo Park·2022년 2월 5일
0

AWS EC2로 http 서버를 가동중이었다.

Amazon Certificate Manager를 통해 무료로 로드밸런서 및 HTTPS 연동을 마치고 테스트를 해보던 중 AJAX가 작동하지 않는것을 확인했다.

처음에는 ELB의 IP 주소와 실제 서버의 IP 주소가 달라서 생기는 에러인줄 알았다.

그런데 Postman 테스트해봤을때는 정상적으로 통신이 되는것을 확인했다.

브라우저에서 요청한것과 Postman에서 요청한것의 차이는 origin이었다.
origin: https로 요청을 보냈는데, ELB를 거쳐 실제 서버에서 처리할때는 http만 처리하도록 되어있어서 https는 cross origin invalid 처리가 되는 것이었다.

그래서 spring 설정파일(xml파일)에서

<mvc:annotation-driven/>
<mvc:cors>
    <mvc:mapping path="/**"
        allowed-origins="https://[domain]"/>
</mvc:cors>

이렇게 설정을 해주었다.

(특정 컨트롤러만 적용하려면 해당 컨트롤러에 어노테이션을 붙이는것으로 해결이 가능했지만, 모든 컨트롤러에 대해 CORS 세팅을 한번에 하고싶었다.)

그 결과, AJAX가 정상작동을 하는것을 확인했다.

그런데 테스트중 POST 요청은 잘 작동하지만 DELETE나 PUT은 여전히 CORS에러가 발생했다.

그래서 spring mvc 설정을 들여다 보니,
mvs:cors 설정의 default allowed-methods는 "GET, POST"라고 되어있었다.

그래서 하기와 같이 요청메소드를 명시해준 결과 모든 요청이 잘 작동하는것을 확인할 수 있었다.

<mvc:annotation-driven/>
<mvc:cors>
    <mvc:mapping path="/**"
        allowed-origins="https://[domain]"
        allowed-methods="GET,POST,PUT,DELETE"/>
</mvc:cors>
profile
going up

0개의 댓글