๐ฅ 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.