티스토리 뷰
흔히 볼 수 있는 교차 출처 리소스 공유(Cross-Origin Resource Sharing, CORS) 에러...
CORS를 간단히 정리하면 아래와 같다.
CORS는 다른 도메인 간에 리소스를 공유할 때 발생하는 보안상의 이슈를 해결하기 위해 만들어진 매커니즘. 웹 브라우저에서는 보안상의 이유로 다른 출처(Origin)에 있는 리소스를 직접 요청할 수 없다.
자세히 정리된 곳은 많으니 따로 정리하진 않겠다.
스프링 프레임워크에서는 간단히 해결이 가능하다.
@Configuration
public class CorsConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOrigins("*")
.allowedMethods("*");
}
}
코드를 간단히 정리하면 @Configuration 어노테이션을 통해서 스프링이 시작될 때, 다른 Bean이 뜨기전에 호출되며 모든 경로(/**)에 대해 모든 출처(*)에서의 모든 HTTP 메서드(*) 요청을 허용하도록 설정한 것이다.
WebMvcConfigurer 인터페이스를 impletents 받았는데, 이 인터페이스는 스프링 MVC 구성을 위한 다양한 기능을 제공한다.
대표적으로 사용되는 게, Interceptor 설정과 정적 리소스 처리, 위에서 설정한 CORS 관련 처리이다.
아래의 매서드들을 Override 받아서 사용하면 된다.
addInterceptors(InterceptorRegistry registry): 인터셉터를 등록하는 매서드
addResourceHandlers(ResourceHandlerRegistry registry): 정적 리소스 처리를 위한 매서드
addCorsMappings(CorsRegistry registry): CORS(Cross-Origin Resource Sharing) 구성을 위한 메서드
이 외에도 여러가지 매서드 들이 있지만(Formatter 등록, URI 매핑, 등) 따로 소개하진 않겠다.(잘안씀)
옛날 옛적에 Spring MVC를 사용할 때는 별도의 servlet-context.xml을 구성해 작성했던 것들인데, 스프링 부트에서는 별도의 인터셉터로 뽑아서 사용하기 쉽게 제공해줬으니 골라서 사용하면될 것 같다.
'개발 > SPRING' 카테고리의 다른 글
스프링 부트에서 초간단 멀티쓰레드 구현하기 : @Async (0) | 2023.06.04 |
---|---|
스프링부트 서비스에 LOG 남기기 (with. Logback) (0) | 2023.05.28 |
스프링 부트 캐시에 객체 저장하기 (0) | 2023.04.27 |
스프링 부트에서 캐시 삭제하기 & 캐시 삭제 전략 (0) | 2023.04.27 |
스프링 부트에서 캐시(Cache) 초간단 사용하기 (0) | 2023.04.26 |
- Total
- Today
- Yesterday
- OpenAI
- 인프런
- ChatGPT
- JWT
- serverless
- terraform
- AWS
- elasticsearch
- S3
- AOP
- java
- awskrug
- docker
- EKS
- GIT
- openAI API
- lambda
- chat GPT
- MySQL
- Log
- Elastic cloud
- AWS EC2
- springboot
- OpenFeign
- Kotlin
- CloudFront
- cache
- Spring
- 스프링부트
- 람다
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |