๐ฅ Spring Security์ CORS ๋ฌธ์
๐ฅ Spring Security์ CORS ๋ฌธ์
๋ฌธ์ ์ํฉ
- ํ๋ก ํธ์๋ ์์
์ ํ๋๋ฐ,
Gateway์๋ฒ์CorsWebFilter๋ฅผ ๊ตฌํํ์์๋CORS๊ด๋ จ ๋ฌธ์ ๋ก ํน์ ์๋น์ค์ ๋ก๊ทธ์ธ์ด ๋ถ๊ฐ๋ฅ ํ๋ค. - ๊ทธ ๊ณผ์ ์์
Gateway์๋ฒ์ ์๋น์ค์ ํด๋นํ๋ ๋ฐฑ์๋ ์๋ฒ์CORS์ฒ๋ฆฌ๋ฅผ ๊ฐ๊ฐ ํด๋ณด์์ง๋ง ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์๋ค.
๋ฌธ์ ์์ธ
Spring Security์ ์ค์ ํ ์ปค์คํ ํํฐ์์OPTIONS์์ฒญ์ ๋ํ ์ธ๊ฐ ์ฌ๋ถ๋ฅผ ๊ฒ์ฌํ๊ณ ์์๋ค.- ๋ก๊ทธ์ธ ๊ฐ์
API๋ ์ธ์ฆ์ด ์ ๋์ด ์๋ ์ฌ์ฉ์๋ ์์ฒญ์ ํ๊ธฐ ๋๋ฌธ์OPTIONS์์ฒญ์ด ํ์ฉ๋์ด์ผ ํ๋ค - ๊ทธ ์ธ์๋
Content-Type์ดapplication/json์ด๊ฑฐ๋ ๋ฉ์๋๊ฐPUT,PATCH,DELETE์ธ ๊ฒฝ์ฐ,Authorizationํค๋๊ฐ ํฌํจ๋ ๊ฒฝ์ฐ ๋ธ๋ผ์ฐ์ ๋OPTIONS์์ฒญ์ ๋ณด๋ด ํน์ ๋๋ฉ์ธ์ ํด๋น ๋ฉ์๋๋ฅผ ํ์ฉํ ๊ฒ์ธ์ง ์ฌ๋ถ๋ฅผ ํ์ธํ๋ค.
ํด๊ฒฐ ๋ฐฉ๋ฒ
1
2
3
private boolean isOptionsRequest(ServerHttpRequest request) {
return request.getMethod() == HttpMethod.OPTIONS;
}
- ์ปค์คํ ํํฐ์์ ์ ๋ฉ์๋๋ฅผ ๋ก์ง์ ์ถ๊ฐํ์๋ค.
ํ๊ณ
- ๋ธ๋ผ์ฐ์ ๊ฐ
API์์ฒญ์ ๋ํด ์ฐ์ ์ ์ผ๋กOPTIONS๋ฉ์๋๋ฅผ ํตํดPREFLIGHT์์ฒญ์ ํ๋ค๋ ์ฌ์ค์ ์๊ฒ ๋์๋ค. - ๊ทธ ์ธ์๋
Gateway์๋ฒ์์corsWebFilter๋ฅผ ๊ตฌํํ๋ฉด ๊ฐ ์๋น์ค์ ๋ฐฑ์๋ ์๋ฒ์์๋CORS๋ฅผ ์ฒ๋ฆฌํ์ง ์์๋ ๋๋ค๋ ์ฌ์ค์ ์๊ฒ ๋์๋ค. - ์ฐธ๊ณ ๋ก ์๋ฒ๋
PREFLIGHT์์ฒญ๊ณผ ์ค์ ์์ฒญ์ ๋ชจ๋CORSํค๋๋ฅผ ๋ถ์ฌ์ ์๋ตํด์ผ ํ๋ค.
This post is licensed under CC BY 4.0 by the author.