Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- https
- getDateCellValue
- MSSQL
- pooled-lo
- yml
- 1*1000
- 오블완
- getEntityGraph
- load order
- EmbeddedId
- mysql =
- mysql not equal null
- createEntityGraph
- @EntityListeners
- deserializer
- apatch poi
- RootGraph
- sendFractionalSeconds
- Protecle
- AuditingEntityListener
- @CreateDate
- MYSQL
- NamedEntityGraph
- 티스토리챌린지
- mysql equal null
- +9:00
- fractional seconds
- 버전 문자열 비교
- spring boot
- 운동해서 광명찾자
Archives
- Today
- Total
Hello
[Spring HATEOAS] 프록시 서버 및 로드 밸런서 사용 시 http 링크 문제 본문
728x90
문제 상황
프로젝트에 Spring HATEOAS를 도입 후 리얼에 반영해 에러가 발생했습니다.
Mixed Content: The page at 'https://aaa.com/view/1' was loaded over HTTPS,
but requested an insecure XMLHttpRequest endpoint 'http://aaa.com/api/1'.
This request has been blocked; the content must be served over HTTPS.
-> HTTPS에서 HTTP 요청시 블럭 발생
해당 프로젝트는 로드 밸런서 뒤에 어플리케이션이 있는 구성입니다.
Spring HATEOAS https 관련해서 검색을 해보니, 기본적으로 Spring Framework 인프라를 사용하여 들어오는 요청의 프로토콜 정보를 사용합니다.
_links의 link값이 http://~~로 된 api를 리턴하고, 해당 api호출 시 위와 같은 에러가 발생하게 됩니다.
해결방법
x-forwarded-* 헤더를 사용해 문제 해결이 가능합니다.
- x-forwarded-proto 원래 요청의 프로토콜(HTTP/HTTPS)
- x-forwarded-port 원래 요청의 포트
필터 등록
ForwardedHeaderFilter은 "Forwarded" 및 "X-Forwarded-*" 헤더에서 값을 추출하고, 요청과 응답을 래핑하고, 클라이언트에서 시작된 프로토콜과 주소를 반영하도록 만듭니다.
모든 X-Forwarded-… 헤더를 처리하는 서블릿 필터가 생성되고, 서블릿 핸들러에 올바르게 등록됩니다.
@Bean
FilterRegistrationBean<ForwardedHeaderFilter> forwardedHeaderFilter() {
FilterRegistrationBean<ForwardedHeaderFilter> bean = new FilterRegistrationBean<>();
bean.setFilter(new ForwardedHeaderFilter());
return bean;
}
properties or yaml 아래 옵션 추가
server.forward-headers-strategy=framework
참고 :
https://github.com/spring-projects/spring-hateoas/issues/461
https://github.com/spring-projects/spring-hateoas/issues/107
좋은글! https://tomgregory.com/aws/spring-boot-behind-load-balancer-using-x-forwarded-headers/
728x90
'spring' 카테고리의 다른 글
Spring에서 트랜잭션을 관리하는 세 가지 방법 (0) | 2024.11.18 |
---|---|
[Spring HATEOAS] 유저 정보 관리에 적용해본 내용 정리 (0) | 2024.05.13 |
[Spring] RequestParam Enum으로 매핑 (0) | 2024.04.18 |
[spring] 같은 bean에서 Propagation.REQUIRES_NEW 동작하지 않음 (0) | 2024.01.29 |
Spring Data JPA @Modifying (0) | 2023.12.18 |