๋ฐฑ์๋์ ํ๋ก ํธ์๋์ ์ถ์ฒ๊ฐ ๋ค๋ฅธ ๊ฒฝ์ฐ, CORS(Cross-Origin Resource Sharing) ์ค์ ์ ํด์ฃผ์ด์ผ ํ๋ค.
๊ฐ๊ธฐ ๋ค๋ฅธ ์น ์ ํ๋ฆฌ์ผ์ด์ ์์ ์์์ ๊ณต์ ํ ๋, ๋ธ๋ผ์ฐ์ ๋ ๋ณด์์์ ์ด์ ๋ก ์ถ์ฒ๊ฐ ๋ค๋ฅด๋ฉด ์ด๋ฅผ ์ ํํ๋ค.
์ด๋ฅผ SOP(Same Origin Policy) ์ ์ฑ ์ด๋ผ๊ณ ํ๋ค.
์คํ๋ง๋ถํธ๋ ์๋ฌด ์ค์ ์ ํ์ง ์์ผ๋ฉด SOP ์ ์ฑ ์ ๋ฐ๋ฅธ๋ค.
์ด๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด, ๋ฐฑ์๋ ์ชฝ์ CORS ์ค์ ์ ํด์ ๋ด๊ฐ ํ์ฉํ origin ์ถ์ฒ๋ง ์ ๊ทผ์ ํ์ฉํ ์ ์๋ค.
๐ ์ถ์ฒ๋?
ํ๋กํ ์ฝ://๋๋ฉ์ธ:ํฌํธ
ex) http://localhost:8080
์คํ๋ง์์ CORS๋ฅผ ์ค์ ํ๊ธฐ ์ํด์๋ ๋๊ฐ์ง ๋ฐฉ๋ฒ์ด ์กด์ฌํ๋ค.
1. WebMvcConfigurer ์ฌ์ฉ (๊ธ๋ก๋ฒ ์ค์ )
: WebMvcConfigurer๋ฅผ ์์ํ๋ ํด๋์ค๋ฅผ ํ๋ ๋ง๋ค๊ณ , addCorsMappings ๋ฉ์๋๋ฅผ ์์๋ฐ์ ์ด๋ฅผ ์์ ํ์ฌ ์ฌ์ฉํ๋ค.
์๋์ ๊ฐ์ด !
registry์๋ .allowedHeaders(), allowedMethods(), allowCredentials()๊ฐ ์ถ๊ฐ๋ก ์กด์ฌํ๋ค.
@Configuration
public class MvcConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
//๋ชจ๋ URL์ ๋ํด ์๋์ ๊ฐ์ ๋ ๊ฐ์ ๋๋ฉ์ธ์ ์ ๊ทผ์ ํ์ฉ
registry.addMapping("/**")
.allowedOrigins("http://localhost:8170","http://localhost:8180");
}
}
2. @CrossOrigin(origins = "ํ์ฉ์ฃผ์:ํฌํธ") ์ด๋ ธํ ์ด์ ์ฌ์ฉ (ํน์ ์ปจํธ๋กค๋ฌ์ URL์๋ง ์ ์ฉ)
@Slf4j
@RequiredArgsConstructor
@CrossOrigin(origins = {"http://localhost:8170","http://localhost:8180"})
@RestController
public class BoardController {
private final BoardService boardService;
//๋ฉ์๋ ๋จ์๋ก ์ ์ฉ๋ ๊ฐ๋ฅํจ
//@CrossOrigin(origins = {"http://localhost:8170","http://localhost:8180"})
@GetMapping("/board/list")
public List<BoardDto> boardDtoList() {
return ...
}
}
'๐ Web > Spring, JPA' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Spring] ๊ฐ์ฒด์ ๊ฐ์ด null์ธ ํ๋ ๋ ธ์ถํ์ง ์๋ ๋ฒ (0) | 2023.05.18 |
---|---|
[JPA] @Embeddable๋ฅผ ์ด์ฉํ ๋ณตํฉํค ์ค์ (0) | 2023.03.03 |
[Spring] String Constant Pool (0) | 2022.08.02 |
[JPA] @Entity, @Table, @Id, @GeneratedValue ์ด๋ ธํ ์ด์ (0) | 2022.07.20 |
[Spring] AOP ์ฌ์ฉ ์์ - AOP class ๊ตฌํ (0) | 2022.03.24 |