๐ 3XX (Redirection) ์ํ ์ฝ๋ - ์ด์ ๋ฆฌ ๋ชจ์
3XX Redirection
3xx ๋ฒ๋์ ์ํ ์ฝ๋๋ค์ ๋ฆฌ๋ค์ด๋ ์ ์ ์๋ฏธํ๋ฉฐ, ์ด๋ ์์ฒญ์ ์๋ฃํ๋ ค๋ฉด ์ถ๊ฐ์ ์ธ ์์ (ํ์ด์ง ์ด๋)์ด ํ์ํจ์ ์๋ฏธํ๋ค.
ํด๋ผ์ด์ธํธ๊ฐ ๊ด์ฌ ์์ด ํ๋ ๋ฆฌ์์ค์ ๋ํด ๋ค๋ฅธ ์์น๋ฅผ ์ฌ์ฉํ๋ผ๊ณ ๋งํด์ฃผ๊ฑฐ๋ ๊ทธ ๋ฆฌ์์ค์ ๋ด์ฉ ๋์ ๋ค๋ฅธ ๋์ ์๋ต์ ์ ๊ณตํ๋ค.
๋ฆฌ๋ค์ด๋ ์ (Redirection)์ ํด๋ผ์ด์ธํธ๊ฐ ์์ฒญํ URL์ ๋ํด ๋ค๋ฅธ URL์ ๋ค์(re) ์ง์(direct)ํ์ฌ ๋ค๋ฅธ ์ฃผ์๋ก ์ด๋ํ ์ ์๊ฒ ํ๋ ๊ธฐ์ ์ด๋ค. HTTP ์ ์ฌ์ฉ๋๋ ๋ฆฌ๋ค์ด๋ ์ ์ ํฌ๊ฒ 3๊ฐ์ง ์ข ๋ฅ๋ก ๋๋ ์ ์๋ค.
- ์๊ตฌ ๋ฆฌ๋ค์ด๋ ์ (Permanent) : ํน์ ๋ฆฌ์์ค์ URL ์ด ์๊ตฌ์ ์ผ๋ก ์ด๋
- ์ผ์ ๋ฆฌ๋ค์ด๋ ์ (Temporary) : ํน์ ๋ฆฌ์์ค์ URL ์ด ์ผ์์ ์ผ๋ก ์ด๋
- ํน์ ๋ฆฌ๋ค์ด๋ ์ (Special) : ์บ์๋ฅผ ํ์ฉํ ๊ฒ์ธ์ง์ ๋ํ ์ฌ๋ถ
์์ ์ด๋ ์ข ๋ฅ์ ๋ฆฌ๋ค์ด๋ ์ ์ ์ด์ฉํ๋๋์ ๋ฐ๋ผ HTTP Status Code๊ฐ ๋ฌ๋ผ์ง๊ฒ ๋๋ค.
์ด์ ๋ถํฐ ๋ค๋ฃฐ 3XX ๋ฒ๋ ๋ฆฌ๋ค์ด๋ ์ ๊ด๋ จ ์ํ ์ฝ๋๋ค์ ๋์ด๋๊ฐ ๋ฎ์ง ์์ ํธ์ ์ํ๊ธฐ ๋๋ฌธ์ ๋ฏธ๋ฆฌ ๊ฐ ์ํ ์ฝ๋๋ค์ ํน์ง์ ๋น๊ตํด ๋์ ํ๋ฅผ ๋จผ์ ์ ๋ณด์ธ๋ค. ๋ง์ผ ๊ฐ ์ํ ์ฝ๋๋ค์ ๋ํด ์ฐจ์ด์ ์ด ํ๊น๋ฆฌ๋ค๋ฉด ์ฐธ๊ณ ํ๊ธธ ๋ฐ๋๋ค.
301 | 308 | 302 | 303 | 307 | |
๋ฆฌ๋ค์ด๋ ์ ์ข ๋ฅ | ์๊ตฌ(Permanent) | ์๊ตฌ(Permanent) | ์ผ์(Temporary) | ์ผ์(Temporary) | ์ผ์(Temporary) |
๋ฆฌ๋ค์ด๋ ์ ์ ๋ฉ์๋๋ฅผ.. | ๋ณ๊ฒฝ | ์ ์ง | ๋ณ๊ฒฝ | ๋ณ๊ฒฝ (๋ณด์ฅ) | ์ ์ง |
300 Multiple Choices
- Multiple Choices โข ์์ฒญ์ ๋ํด์ ๋ ์ด์์ ๊ฐ๋ฅํ ์๋ต์ด ์์์ ๋ํ๋ธ๋ค.
- ํด๋ผ์ด์ธํธ๊ฐ ๋์์ ์ฌ๋ฌ ๋ฆฌ์์ค๋ฅผ ๊ฐ๋ฆฌํค๋ URL์ ์์ฒญํ ๊ฒฝ์ฐ, ๊ทธ ๋ฆฌ์์ค์ ๋ชฉ๋ก๊ณผ ํจ๊ป ๋ฐํ๋๋ค.
- ์ด๋ค ์๋ฒ๊ฐ ํ๋์ HTML ๋ฌธ์๋ฅผ ์์ด์ ํ๋์ค์ด ๋ชจ๋๋ก ์ ๊ณตํ๋ ๊ฒฝ์ฐ ๋ฑ์ ์ฌ์ฉํ ์ ์๋ค.
- ๊ทธ๋ฌ๋ ์๋ต ์ค ํ๋๋ฅผ ์ ํํ๋ ํ์คํ๋ ๋ฐฉ๋ฒ์ด ์๊ธฐ ๋๋ฌธ์, ์ด ์๋ต ์ฝ๋๋ ์ค๋ฌด์์ ๊ฑฐ์ ์ฌ์ฉ๋์ง ์๋๋ค.
301 Moved Permanently
- Moved Permanently โข ์๊ตฌ์ ์ผ๋ก ์ด๋ (์๊ตฌ ๋ฆฌ๋ค์ด๋ ์ )
- ์์ฒญ๋ ๋ฆฌ์์ค๊ฐ Location ํค๋๊ฐ ์ง์ ํ URL๋ก ์ด๋๋์์์ ๋ํ๋ธ๋ค.
- ํด๋น URL๋ก ๋ฆฌ๋ค์ด๋ ์ ๋๋ฉด, ์์ฒญ ๋ฉ์๋๊ฐ GET์ผ๋ก ๋ณํ๊ณ ๋ณธ๋ฌธ์ด ์ ๊ฑฐ๋ ์ ์๋ค.
- ๋ฐ๋ผ์ 301 ์ฝ๋๋ GET ๋๋ HEAD ๋ฐฉ๋ฒ์ ๋ํ ์๋ต์ผ๋ก๋ง ์ฌ์ฉํ๊ณ , ๋์ POST, PUT ๊ฐ์ ๊ฒฝ์ฐ๋ ๊ฐ์ ์๊ตฌ ๋ฆฌ๋๋ ์ ์ธ 308 Permanent Redirect ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค.
๐ 301 ์ํ์ฝ๋ ํ๋ฆ ์์
- ํด๋ผ์ด์ธํธ๋ '/event' ๋ผ๋ URL ์ ์น์๋ฒ์ ์ ์กํ์ฌ ์ด๋ฒคํธ ํ์ด์ง์ ๋ํ GET ์์ฒญํ๋ค..
- ํ์ง๋ง, '/event' ๋ ๋ ์ด์ ์ฌ์ฉํ์ง ์๋ URL ์ด๋ฉฐ, ํ์ฌ๋ '/new-event' ๋ฅผ ์ฌ์ฉํ๊ณ ์๋ค๊ณ ํ์ฌ ์๋ฒ์์ 301 ๋ฆฌ๋ค์ด๋ ์ ์ํ ์ฝ๋์ ํจ๊ป ํค๋์ Location ํ๋์ ์๋ก์ด URL ์ธ '/new-event' ๋ฅผ ๋ด์ ์๋ต๋ฉ์์ง๋ฅผ ์ ์กํ๋ค.
- ์๋ต๋ฉ์์ง๋ฅผ ์ ๋ฌ๋ฐ์ ํด๋ผ์ด์ธํธ๋ 301 ์ํ ์ฝ๋์ Location ํ๋์ URL ์ ์ฐธ๊ณ ํ์ฌ, ์๋ก์ด URL ๋ก ๋ฆฌ๋ค์ด๋ ์ ํ๋ผ๋ ๊ฒ์ ์ธ์งํ๋ค.
- ํด๋ผ์ด์ธํธ๋ ๋ฆฌ๋ค์ด๋ ์ ํ๊ธฐ ์ํด '/new-event' ๋ผ๋ URL ์ ์น์๋ฒ์ ์ ์กํ์ฌ ์ด๋ฒคํธ ํ์ด์ง์ ๋ํ GET ์์ฒญํ๋ค.
- ์๋ฒ๋ 200 OK ์ ํจ๊ป ์ด๋ฒคํธ ํ์ด์ง์ html ์ ์ ์กํด์ฃผ๊ฒ ๋๋ค.
๐ 301 ์ํ์ฝ๋ ์์ข์ ์์
์๋ ์์๋ ์ 301 ์ํ ์ฝ๋๋ฅผ POST ์์ฒญ์ ๋ํด ์ฌ์ฉํ๋ฉด ์๋๋์ง์ ๋ํ ํ๋ฆ์ ๋ณด์ฌ์ค๋ค.
- ํด๋ผ์ด์ธํธ๋ '/event' ์ ์ด๋ฒคํธ ํ์ด์ง์ 'name' ๊ณผ 'age' ๋ฐ๋ ์ ๋ณด๋ฅผ ๋ด์ POST ์์ฒญ์ ํ๋ค.
- ์ด ๋ ์๋ฒ๋ 301์ํ์ฝ๋์ Location ํ๋๋ฅผ ํ์ฉํ์ฌ ์ด๋ฒคํธ ํ์ด์ง์ ์ฃผ์๊ฐ '/new-event' ๋ผ๋ ์๋ก์ด ์ฃผ์๋ก ์๊ตฌ์ ๋ณ๊ฒฝ๋์๋ค๋ ์ฌ์ค์ ์๋ฆฌ๊ณ ๋ธ๋ผ์ฐ์ ๋ก ํ์ฌ๊ธ ๋ฆฌ๋ค์ด๋ ํธ๋ฅผ ์ง์ํ๋ค.
- ๊ทธ๋ผ ํด๋ผ์ด์ธํธ๋ ํด๋น Location์ผ๋ก ์์ฒญํ๊ฒ ๋๋๋ฐ, ๊ทธ๋ฐ๋ฐ ์์ฒญ ๋ฉ์๋๋ฅผ GET ์ผ๋ก ๋ณ๊ฒฝ์ํค๊ณ '/new-event'์ ์์ฒญํ๊ฒ ๋๋ค. ๋ํ ์ด๋ ๋ณธ๋ฌธ์ด ์ ๊ฑฐ๋๋๋ฐ, POST ๊ฐ GET ์ผ๋ก ๋ณ๊ฒฝ๋ ๋ 'name' ๊ณผ 'age' ์ ๋ณด๋ ๋ณธ๋ฌธ์ ํด๋นํ๋ฏ๋ก ์ ๊ฑฐ๋์๊ธฐ ๋๋ฌธ์ด๋ค.
- ๋ฐ๋ผ์ ๋ณธ๋ ํด๋ผ์ด์ธํธ์ ์๋๋๋ก ํ๋ฌ๊ฐ์ง ์๊ฒ ๋์ด ๊ฒฐ๊ตญ์ ๋ณธ๋ฌธ ์ ๋ณด๋ฅผ ๋ค์ ์์ฑํ์ฌ POST ์์ฒญ์ ๋ณด๋ด์ผ ํ ๊ฒ์ด๋ค. ์ด๋ฌํ ๋ฌธ์ ๋๋ฌธ์ POST ์์ฒญ์ 308 Permenant Redirect ๋ฅผ ์ฌ์ฉํ๊ธฐ๋ฅผ ๊ถ๊ณ ํ๋ค.
๋ค๋ง 301 ์ํ์ฝ๋๊ฐ ๋ฌด์กฐ๊ฑด ์์ฒญ ๋ฉ์๋๋ฅผ ๋ณ๊ฒฝ์ํค๋ฉฐ, ๋ณธ๋ฌธ์ ์ ๊ฑฐํ๋ ๊ฒ์ด ์๋๋ผ๋ ์ ์ ์ ์ํ์.
์ด ๋ถ๋ถ์ ๋ธ๋ผ์ฐ์ ๊ฐ 301 ์๋ต์ ๋ํ ์์ ์ ์ด๋ป๊ฒ ๊ตฌํํด๋์๋์ง์ ๋ฐ๋ผ ๋ค๋ฅผ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค. ๊ทธ๋ฌ๋ ๊ฑฐ์ ๋๋ถ๋ถ์ ๋ธ๋ผ์ฐ์ ๋ ์์ฒญ ๋ฉ์๋๋ฅผ GET ๋ฉ์๋๋ก ๋ณ๊ฒฝ์ํค๊ณ ๋ณธ๋ฌธ์ ์ ๊ฑฐํ๋๋ก ๊ตฌํํ์์ผ๋ฏ๋ก ์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ์ํ๋ ๊ฐ๋ฅ์ฑ์ด ๋๋ค.
302 Found
- Found โข๋ค๋ฅธ URL์์ ๋ฆฌ์์ค๋ฅผ ์ฐพ์ (์ผ์ ๋ฆฌ๋ค์ด๋ ์ )
- ์์ฒญ๋ ๋ฆฌ์์ค๊ฐ Location ํค๋๊ฐ ์ง์ ํ URL๋ก ์ผ์์ ์ผ๋ก ์ด๋๋์์์ ๋ํ๋ธ๋ค. (๋ง์ด ์ผ์์ด์ง ์ URL๋ก ๋ฆฌ๋ค์ด๋ ํธ ๋๋๊ฑด ๊ฐ์)
- 302๋ ๋ฆฌ๋ค์ด๋ ํธ ์ 301๊ณผ ๊ฐ์ด ์์ฒญ ๋ฉ์๋๊ฐ GET์ผ๋ก ๋ณํ๊ณ ๋ณธ๋ฌธ์ด ์ ๊ฑฐ ๋ ์์์ง๋ง, ๋ฌด์กฐ๊ฑด์ ์ผ๋ก ๋ณ๊ฒฝํ์ง ์๊ธฐ ๋๋ฌธ์ ๋ธ๋ผ์ฐ์ ์ ๋ฐ๋ผ ์์ ์ํ์ด ๋ฌ๋ผ์ง๋ ๋ถํ์ค์ฑ์ ๊ฐ์ง ์ ์๋ค๋ ํน์ง์ด ์๋ค.
- ์ด๋ฌํ ๋ถํ์ค์ฑ ๋๋ฌธ์ 303, 307 ์ํ ์ฝ๋๊ฐ ์ถ๊ฐ๋์๋ค. ๊ทธ๋์ ๋ง์ผ ์ฌ์ฉ๋ ๋ฉ์๋๋ฅผ GET๋ก ๋ณ๊ฒฝํ๋ ค๋ ๊ฒฝ์ฐ ๋์ 303 See Other๋ฅผ ์ฌ์ฉํ๋๊ฒ ์ข๋ค.
๐ 301 vs 302 ์ฐจ์ด์ (์ผ์ vs ์๊ตฌ ๋ฆฌ๋ค์ด๋ ์ )
301์ ์์ฒญํ ์ ๋ณด๊ฐ ์๋ก์ด ์ฃผ์๋ก ์๊ตฌ์ ์ผ๋ก ์ฎ๊ฒจ๊ฐ๋ค๋๊ฒ์ ๋งํด์ฃผ๋ฉฐ, 302๋ ์ผ์์ ์ผ๋ก ์ฎ๊ฒจ๊ฐ๋ค๋๊ฒ์ ๋งํด์ค๋ค.
์ด '์๊ตฌ์ ' ๊ณผ '์ผ์์ ' ์ฐจ์ด๊ฐ ์ ๋งค๋ชจํธํ ์ ์์ ๊ฒ์ด๋ค. ์๋ํ๋ฉด ๋์ด ๋์ ํํ๋ฅผ ํ์ธํด๋ณด๋ฉด ํ๋ฉด์์ผ๋ก๋ ๋๋ค ์๋์ผ๋ก ๋ฆฌ๋ค์ด๋ ์ ํ๋ ์ฌ๋์ ์ก์์ผ๋ก๋ ๊ตฌ๋ณํ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
์ฌ์ค ์ด ๋์ ๊ตฌ๋ณํ๋ ์ฃผ์ฒด ๋์์ ์ฌ๋์ด ์๋ ๊ฒ์ ์์ง, ๊ฒ์ ๋ด์ด๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ค ๋ฆฌ๋ค์ด๋ ์ ์ ์ฐ๋๋์ ๋ฐ๋ผ ๊ฒ์์์ง ์ต์ ํ์ ๋ฏธ์น๋ ์ํฅ์ ๊ฝค ํฌ๋ค. ์ด์ ๋ํด์ ๋ค์ ํฌ์คํ ์ ์ฐธ๊ณ ํ๊ธธ ๋ฐ๋๋ค.
[HTTP] ๐ 301 vs 302 ์ํ ์ฝ๋ ์ฐจ์ด์ (SEO)
301 vs 302 Redirection ๋ฆฌ๋ค์ด๋ ์ (Redirection)์ ๋ณดํต ์น์ฌ์ดํธ๋ฅผ ์๋ก์ด ๋๋ฉ์ธ์ผ๋ก ์ฎ๊ฒผ๊ฑฐ๋ ํ์ด์ง์ ์ฃผ์๊ฐ ๋ฐ๋์์๋, ์ด์ฉ์๋ค์ ํ์ฌ๊ธ ๋ณ๊ฒฝ๋ ์ฃผ์๋ก ์๋์ผ๋ก ์ฎ๊ฒจ๊ฐ๊ฒ ๋ง๋๋๋ฐ ์ฌ์ฉ๋๋ค.
inpa.tistory.com
๐ PRG (Post - Redirect - Get) ํจํด
์๊ฐํด๋ณด๋ 301 Moved Permantly ์ 302 Found ๋ชจ๋ ๋ฆฌ๋ค์ด๋ ์ ๋ค ์์ฒญ ๋ฉ์๋๋ฅผ GET์ผ๋ก ๋ฐ๊พธ๋๋ก ์ค๊ณ๋์ด ์๋ค. ์ ์ด๋ฐ์์ผ๋ก ์ค๊ณ๋์์๊น?
์ผํ๋ชฐ ์ฌ์ดํธ์์ POST๋ฅผ ํตํด ์ฃผ๋ฌธ์ ์์ฒญํ๊ณ , ๋ธ๋ผ์ฐ์ ๋ฅผ ์๋ก๊ณ ์นจ(refresh) ํ์๋ค๊ณ ๊ฐ์ ํด๋ณด์. refresh๋ ์ด์ ์ ์์ฒญ์ ์ฌ์ ์ก ํ๊ธฐ ๋๋ฌธ์ POST ์์ฒญ์ ๋ค์ํ๊ฒ ๋๊ณ ๋ฐ๋ผ์ ์๋ฒ์ ์ค๋ณต ์ฃผ๋ฌธ์ด ๋ค์ด๊ฐ๊ฒ ๋ ๊ฐ๋ฅ์ฑ์ด ์๋ค.
- ํด๋ผ์ด์ธํธ๋ ์ฃผ๋ฌธ์ฐฝ์์ mouse ์ ํ๊ณผ ์๋์ 1๊ฐ๋ก ์ ํํ๊ณ POST ๋ฉ์๋๋ก ์ฃผ๋ฌธ ์์ฒญ์ ์๋ฒ์ ์ ์กํ๋ค.
- ์๋ฒ์์๋ ์ฃผ๋ฌธ ์์ฒญ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅํ๋ค.
- ๊ทธ๋ฆฌ๊ณ 200 OK ๋ฅผ ๋ฐํํ๋ค.
- ์ฌ์ฉ์๊ฐ ๋ธ๋ผ์ฐ์ ๋ฅผ ์๋ก๊ณ ์นจ(refresh) ํ์๋ค.
- ์ด๋ refresh ๋๋ฉด์ ์ด์ POST ์์ฒญ์ด ๊ทธ๋๋ก ์ฌ์ ์ก๋๊ณ , ๊ฐ์ ์ฃผ๋ฌธ์ด ์ค๋ณต๋์ด ์์ฑ๋๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๊ฒ ๋๋ค.
๋ฐ๋ผ์ ์ด๋ฌํ ๋ฌธ์ ๋๋ฌธ์ ์ด์ POST ๋ฉ์๋๋ฅผ GET ๋ฉ์๋๋ก ๋ณํ ์์ผ์ค์ผ๋ก์จ ์ค๋ณต ์ฃผ๋ฌธ์ ๋ฐฉ์งํ์๋ ์ทจ์ง์์ ์ค๊ณ๋ ๊ฒ์ผ๋ก ๋ณด๋ฉด๋๋ค.
๋ณธ๋ก ์ผ๋ก ๋์ด์์, PRG ํจํด์ ์์ฒ๋ผ ์ผ์์ ์ธ ๋ฆฌ๋ค์ด๋ ์ ์์ ์ค๋ณต ์์ฒญ์ ์ ์ก์ ๋ฐฉ์งํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ์ผ์ข ์ HTTP ํจํด์ด๋ค. ๋ฐฐ๋ฌ ์ด๋ ์ผํ ์ดํ๋ฆฌ์ผ์ด์ ์์ ์ฃผ๋ฌธ์ด ๋๋ ํ ์๋์ผ๋ก ์ฃผ๋ฌธ์ด ์๋ฃ๋์์์ ์๋ฆฌ๋ ๊ฒฐ๊ณผ ํ๋ฉด์ผ๋ก ์ด๋ํ๊ฒ ๋๋ ๋์๋ค์ด PRG ํจํด์ ์ฌ๋ก์ด๋ค.
์์ ์ฌ๋ก์์ PRG ํจํด์ด ์ ์ฉ๋ 302 ์ํ ์ฝ๋๋ฅผ ์ ์ฉํ๋ฉด ๋ค์๊ณผ ๊ฐ์ด ๋๋ค.
- ํด๋ผ์ด์ธํธ๋ ์ฃผ๋ฌธ์ฐฝ์์ mouse ์ ํ๊ณผ ์๋์ 1๊ฐ๋ก ์ ํํ๊ณ POST ๋ฉ์๋๋ก ์ฃผ๋ฌธ ์์ฒญ์ ์๋ฒ์ ์ ์กํ๋ค.
- ์๋ฒ์์๋ ์ฃผ๋ฌธ ์์ฒญ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅํ๋ค.
- ๊ทธ๋ฆฌ๊ณ ๋ฆฌ๋ค์ด๋ ํธํ
Locationํค๋์ ํจ๊ป 302 Found๋ฅผ ๋ฐํํ๋ค. - ํด๋ผ์ด์ธํธ๋ ํค๋ ๋ฉ์ธ์ง๋ฅผ ์ฝ๊ณ ์ฃผ๋ฌธ ๊ฒฐ๊ณผ ํ๋ฉด์ธ '/order-result/19' ๋ก ๋ฆฌ๋ค์ด๋ ํธ ์ค๋น๋ฅผ ํ๋ค.
- ํด๋ผ์ด์ธํธ๋ '/order-result/19' ๋ก ์์ฒญ์ ํ๋ค. ์ด๋ ๋ฉ์๋๋ฅผ GET์ผ๋ก ๋ณ๊ฒฝํ๊ณ body๋ฅผ ์ ๊ฑฐํ๋ค. ๋ฐ๋ผ์ ํด๋ผ์ด์ธํธ๋ ๋ฌธ ๊ฒฐ๊ณผ ํ๋ฉด์ ๋ํด ๋จ์ ์กฐํ ์์ฒญ์ ์ ์กํ๊ฒ ๋๋ค.
- ์๋ฒ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ํด๋น ์ฃผ๋ฌธ์ ์กฐํํ๋ค.
- ๊ทธ๋ฆฌ๊ณ 200 OK ๋ฅผ ๋ฐํํ๋ค.
- ์ฃผ๋ฌธ ๊ฒฐ๊ณผ ํ๋ฉด์ผ๋ก ์ด๋ํ๊ฒ ๋ ํด๋ผ์ด์ธํธ๋, ์๋ก๊ณ ์นจ๋ฅผ ๋ฐ๋ณตํ๋๋ผ๋ ์ฃผ๋ฌธ ๊ฒฐ๊ณผ ํ๋ฉด์ ๋ํ ์กฐํ ์์ฒญ๋ง์ ๋ฐ๋ณต์ ์ผ๋ก ์ ์กํ๊ฒ ๋๋ค. (5๋ฒ์ผ๋ก ์ด๋๋จ)
์ ๋ฆฌํ์๋ฉด PRG ํจํด์ด ์ ์ฉ๋ ์ ์ ํ ์ํ์ฝ๋๋ฅผ ์ฌ์ฉํจ์ผ๋ก์จ ์ค๋ณต ์ฃผ๋ฌธ ์์ฒญ์ ๋ฐฉ์งํ ๊ฒ์ด๋ค.
303 See Other
- See Other โข๋ค๋ฅธ URL์์ ๋ฆฌ์์ค๋ฅผ ์ฐพ์ (์ผ์ ๋ฆฌ๋ค์ด๋ ์ )
- 302 Found ๊ณผ ๊ธฐ๋ฅ์ ๋์ผํ๊ฒ ์ผ์ ๋ฆฌ๋ค์ด๋ ํธ ์ ์์ฒญ ๋ฉ์๋๊ฐ GET๋ก ๊ณ ์ ๋๊ณ ๋ณธ๋ฌธ์ ์ ๊ฑฐํ๋ค.
- ๋ค๋ง 302 Found ์ ๋ค๋ฅด๊ฒ ์์ฒญ ๋ฉ์๋์ ๋ณ๊ฒฝ๊ณผ ๋ณธ๋ฌธ ์ ๊ฑฐ ํ์๋ฅผ ๋ฌด์กฐ๊ฑด์ ์ผ๋ก ๋ณด์ฅํ๋ค.
- ๋ฐ๋ผ์ ํด๋ผ์ด์ธํธ๊ฐ ์์ฒญํ ๋ฆฌ์์ค๋ฅผ ๋ค๋ฅธ URI์์ GET ์์ฒญ์ ํตํด ์ป์ด์ผ ํ ๋, ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ๋ก ๋ณด๋ด๋ ์๋ต์ผ๋ก ์ด์ฉ๋๋ค.
- ๋ณดํต PUT ๋๋ POST์ ๊ฒฐ๊ณผ๋ก์ ์์ฒญ์ ๋ํ ์๋ต์ผ๋ก ํด๋ผ์๊ฒ ๋ฆฌ์์ค์ ์์น๋ฅผ ์๋ ค์ฃผ๋ ์ฉ๋๋ก ์ฐ์ธ๋ค.
303 ์ํ ์ฝ๋๋ GET ๋ฉ์๋๋ฅผ ๋ณด์ฅํ์ฌ ์ฌ์ฉ์ ์์ด์ ํธ๊ฐ ์๋ชป ํด์ํ ๊ฐ๋ฅ์ฑ์ด ์ ๊ธฐ ๋๋ฌธ์ 302 ์ํ ์ฝ๋ ๋์ ์ฌ์ฉ๋๋ค. ํ์ง๋ง ๋๋ถ๋ถ์ ๋ธ๋ผ์ฐ์ ๊ฐ ์ด๋ฏธ ๋ฉ์๋ ๋ณ๊ฒฝ๊ณผ ๋ณธ๋ฌธ ์ญ์ ๋ฅผ ์ง์ํ๊ณ ์๊ธฐ ๋๋ฌธ์, ์ค๋ฌด์์๋ 302 Found ๋ ๋ง์ด ์ฌ์ฉํ๊ณ ์๊ณ ์ฌ์ค์ ๋ฌธ์ ๊ฐ ์๋ค๊ณ ํ๋ค.
304 Not Modified
- Not Modified โข ์์ ๋์ง ์์ ์ต์ ๋ฆฌ์์ค์ด๋ ์บ์ ์ด์ฉํ๋ผ
- ๋ฆฌ์์ค ๋ณต์ฌ๋ณธ ์ํ๊ฐ ์์ ๋์ง ์์ ์ต์ ์ํ์ด๋ฏ๋ก ์บ์๋ฅผ ์ด์ฉํ๋ผ๋ ํน์ ๋ฆฌ๋ค์ด๋ ์
- ์ฆ, ํด๋ผ์ด์ธํธ๊ฐ ๋ฆฌ์์ค๋ฅผ ์์ฒญํ๋๋ฐ ์๋ฒ๋ก๋ถํฐ 304 ์๋ต์ด ์ค๋ฉด, ํด๋ผ์ด์ธํธ๊ฐ ์์ฒญํ ๋ฆฌ์์ค๊ฐ ์์ ๋์ง ์์ ์ต์ ์ํ์ด๋, ์บ์์ ๊ฐ์ง๊ณ ์๋ ๋ฆฌ์์ค๋ฅผ ๊ทธ๋๋ก ์ฌ์ฉํด๋ ๋๋ค๋ ์๋ฏธ๋ฅผ ๊ฐ์ง๋ค. ๋ฐ๋ผ์ ํด๋ผ์ด์ธํธ๋ ์บ์์์ ๋ฆฌ์์ค๋ฅผ ์ฌ์ฌ์ฉํ๊ฒ ๋๊ณ ์ด๋ฅผ ํตํด ๋คํธ์ํฌ ํธ๋ํฝ์ ์ค์ผ์ ์๊ฒ ๋๋ค.
- ์ฃผ์ํ ์ ์ 304 ์๋ต ๋ฉ์์ง๋ Body ๋ณธ๋ฌธ์ ์ด๋ ํ ๋ฐ์ดํฐ๋ ํฌํจํด์๋ ์๋๋ค. (ํด๋ผ์ด์ธํธ๊ฐ ๋ก์ปฌ์ ์๋ ์บ์์์ ๋ฆฌ์์ค๋ฅผ ๊ฐ์ ธ์ ์ฌ์ฉํ์ฌ์ผ ํ๊ธฐ ๋๋ฌธ)
- 304 ์๋ต ์ฝ๋๋ฅผ ๋ฐํ๋ฐ๊ธฐ ์ํด์ , ํด๋ผ์ด์ธํธ๋
If-Modified-Sinceํค๋ ํน์If-None-Matchํค๋๋ฅผ ํฌํจํ ์กฐ๊ฑด๋ถ ์์ฒญ์ ์ ์กํด์ผ ํ๋ค. - 304 ์๋ต์ GET ๊ณผ HEAD ๋ฉ์๋์๋ง ๋์ํ๋ค.
CSS, JavaScript ๋๋ ์ด๋ฏธ์ง์ ๊ฐ์ ์ ์ ์ฝํ ์ธ ๋ฅผ ๋ณด๋ค ํจ์จ์ ์ผ๋ก ์ ๋ฌํ๊ธฐ ์ํด CDN์์ ์์ฃผ ์ฌ์ฉ๋๋ ๊ธฐ๋ฒ์ด๋ค.
๐ก ์บ์(Cache) ์ ๋ฆฌ๋ค์ด๋ ์ (Redirection) ๊ด๊ณ
304 ์ํ ์ฝ๋๋ ๋ค๋ฅธ URL์ ์ ์ดํ๋๊ฒ ์๋ ์บ์๋ฅผ ์ด์ฉํ ์ํ ์ฝ๋์ธ๋ฐ ์ด๊ฒ์ด ์ 3XX ๋ฆฌ๋ค์ด๋ ์
๊ณผ ๋ฌด์จ ๊ด๋ จ์ด ์๋ ๊ฒ์ผ๊น?
์ฐ์ , ๋ฆฌ๋ค์ด๋ ์
์ ๋จ์ํ ๋ค๋ฅธ URL๋ก ์ ์ด์ํค๋ ๊ฒ์ผ๋ก ์ดํดํ๊ณ ๋ง ์์ํ
๋ฐ, ์ ํํ ๊ธฐ์ ์๋ฏธ๋ ํ์ด์ง ๋จ์์ ์ค์ ๋ฆฌ์์ค, ํผ ํน์ ์ ์ฒด ์น ์ ํ๋ฆฌ์ผ์ด์
์ด ๋ค๋ฅธ URL์ ์์นํ๊ณ ์๋ ์ํ์์ ๋งํฌ๋ฅผ ์กด์์ํค๋ ๊ธฐ์ ์ ๋งํ๋ค.
์ฌ์ค ์น์๋ฒ, ํ๋ก์, ์บ์, ๊ฒ์ดํธ์จ์ด ๋ชจ๋ ํด๋ผ์ด์ธํธ๊ฐ ๊ทธ๋ค์๊ฒ HTTP ์์ฒญ์ ๋ณด๋ด๊ณ ๊ทธ๋ค์ด ๊ทธ๊ฒ์ ์ฒ๋ฆฌํ๋ค๋ ๊ด์ ์์, ํด๋ผ์ด์ธํธ์๊ฒ ์์ด ๋ชจ๋ ์๋ฒ๋ผ๊ณ ํ ์ ์๋ค.
๋ฐ๋ผ์ ๋ก์ปฌ ์บ์๋ผ๊ณ ํ ์ง๋ผ๋ ํด๋ผ์ด์ธํธ ์ ์ฅ์์ ๋ฉ๋ฆฌ ๋จ์ด์ ธ์๋ ๋ฐ๋ก ์์ ์๋ ์ด์จ๋ ๋ฆฌ์์ค ์ ๊ณต์ ์ญํ ์ ํ๋ ์๋ฒ(Server)๋ก ์น๋ถํ๊ธฐ ๋๋ฌธ์ ์บ์๋ฅผ ๋ค๋ฅธ URL๋ก ๋ณด์ ์บ์์ ๋งํฌ๋ฅผ ์กด์์ํค๋๊น ๋ฆฌ๋ค์ด๋ ํธ๋ผ๋ ํํ์ ์ฐ๋ ๊ฒ์ด๋ค.
๐ 304 ์ํ์ฝ๋ ํ๋ฆ ์์
If-Modified-Since ํค๋ ์ฌ์ฉ
- ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ๋ก๋ถํฐ ์์ฒญ์ ๋ฐ์ผ๋ฉด If-Modified-Since ํค๋๊ฐ ์๋์ง ํ์ธ
- ์์ผ๋ฉด ์ต์ด ์์ฒญ์ด๊ธฐ ๋๋ฌธ์ ์๋ฒ๋ ์ต์ ์ฝํ ์ธ ๋ฅผ ํด๋ผ์ด์ธํธ์ ์ ๋ฌ (200 OK)
- ๋ฐ๋ฉด์ If-Modified-Since ํค๋๊ฐ ์์ผ๋ฉด, ์๋ฒ๋ ๋ธ๋ผ์ฐ์ ๊ฐ ํ์ผ์ ๋ง์ง๋ง์ผ๋ก ์ก์ธ์คํ ์ดํ ํ์ผ์ด ํธ์ง๋์๋์ง ํ์ธ
- ํ์ผ์ด ์์ ๋ ์ํ๋ผ๋ฉด, ์๋ฒ๋ ํด๋ผ์ด์ธํธ์ ์ ํ์ผ ๋ณต์ฌ๋ณธ์ ๋ฐํ (200 OK)
- ํ์ผ์ด ์ต์ ์ํ๋ผ๋ฉด, ๋ธ๋ผ์ฐ์ ๋ ์บ์์์ ์ฝํ ์ธ ๋ฅผ ๊ฒ์ํ ์ ์์ (304 Not Modified)
1. ํด๋ผ์ด์ธํธ๋ ์๋ฒ์๊ฒ ์ด๋ฏธ์ง(logo.gif) ์์ฒญ์ ํ๋ค.
2. ์๋ฒ๋ ๋ฆฌ์์ค์ ๋๋ถ์ด ํค๋์ ๋ง์ง๋ง์ผ๋ก ์์ ๋ ๋ ์ง์ ์๊ฐ์ ๋ํ๋ด๋ Last-Modified ๋ฅผ ์ค์ ํ์ฌ ์๋ตํด์ค๋ค.
3. ํด๋ผ์ด์ธํธ๊ฐ ๊ฐ์ ๋ฆฌ์์ค์ ๋ํด ์ฌ์์ฒญ์ ํ๋ค. ์ด๋ ์ต์ด ์๋ต ์ ๋ฐ์ Last-Modified ํค๋๋ฅผ ์ฐธ์กฐํ์ฌ If-Modified-Since ํค๋๋ฅผ ์ค์ ํ์ฌ ์์ฒญํ๋ค.
4. ์๋ฒ๋ If-Modified-Since ์์ฒญ ํค๋๊ฐ๊ณผ ์๋ณธ ์ด๋ฏธ์ง ์์ ์๊ฐ์ ๋น๊ตํ์ฌ ๋ณ๊ฒฝ ์ฌํญ์ด ์์ผ๋ฉด 304 Not Modified๋ก ์๋ตํ๋ค.
5. ํด๋ผ์ด์ธํธ๋ ์์ฌํ๊ณ ๋ก์ปฌ ์บ์์์ ์ด๋ฏธ์ง ๋ฆฌ์์ค๋ฅผ ๊ฐ์ ธ์ ์ฌ์ฉํ๋ค.
If-None-Match ํค๋ ์ฌ์ฉ
If-Modified-Since๊ฐ ๋ ์ง์ ์๊ฐ์ ๊ธฐ์ค์ผ๋ก ํ์ผ ์ํ๋ฅผ ํ๋ณํ๋ ๊ฒ์ด๋ผ๋ฉด If-None-Match ๋ ETag ํค๋๋ฅผ ์ด์ฉํ์ฌ ํ์ผ ์ํ๋ฅผ ํ๋จํ๋ค.
ETag ํค๋๋ ํน์ ๋ฒ์ ์ ๋ฆฌ์์ค๋ฅผ ์๋ณํ๋ ๊ณ ์ ์๋ณ์์ด๋ค.
์๋ฒ๋ ํ์ผ์ด ๋ณ๊ฒฝ๋ ๋๋ง๋ค ์ ETag ๊ฐ์ ์์ฑํ๊ณ ์ด์ ETag ๊ฐ์ ์ ์งํ๋ค.
1. ํด๋ผ์ด์ธํธ๊ฐ ํ์ผ์ ์์ฒญํ๋ฉด, ์๋ฒ์์ ๋ฆฌ์์ค์ ETag ํค๋๋ฅผ ์์
2. ํด๋ผ์ด์ธํธ๊ฐ ๊ฐ์ ํ์ผ์ ์ฌ์์ฒญ. ์ด๋ If-None-Match ํค๋์ ํจ๊ป ์๋ฒ์ ์ ์ก
3. ์๋ฒ๋ If-None-Match ์ ETag ๊ฐ ์ผ์นํ๋์ง ํ์ธ
4. ์ผ์น ํ์ง ์์ ๊ฒฝ์ฐ ์๋ฒ๋ ํ์ผ์ ์ ๋ณต์ฌ๋ณธ์ ๋ณด๋ด๊ณ , ์ผ์นํ๋ฉด 304 Not Modified ๋ฅผ ๋ฐํ.
305 Use Proxy
- Use Proxy โข ๋ฆฌ์์ค๊ฐ ํ๋ก์๋ฅผ ํตํด์๋ง ์ก์ธ์ค๋ ์ ์์์ ํํ
- ์์ฒญํ ์๋ต์ ๋ฐ๋์ ํ๋ก์๋ฅผ ํตํด์ ์ ์ํด์ผ ํ๋ ๊ฒ์ ์๋ ค์ค๋ค.
- ๋ณด์ ๋ฌธ์ ๋ก ์ธํด ๋ ์ด์ ์ฌ์ฉ๋์ง ์๋ HTTP ์ํ ์ฝ๋
306 Switch Proxy
- Switch Proxy โข ํด๋ผ์ด์ธํธ๊ฐ ๋์ฒด ํ๋ก์๋ฅผ ์ฌ์ฉํ๋๋ก ๋ฆฌ๋ค์ด๋ ์ (switch) ์ํจ๋ค
- ์ด ์๋ต ์ฝ๋๋ ๋์ด์ ์ฌ์ฉ๋์ง ์์ผ๋ฉฐ, ํ์ฌ๋ ๋ฏธ๋์ ์ฌ์ฉ์ ์ํด ์์ฝ๋์ด ์๋ค.
307 Temporary Redirect
- Temporary Redirect โข ์ผ์ ๋ฆฌ๋ค์ด๋ ์
- 302 Found ๊ณผ ๊ธฐ๋ฅ์ ๋์ผํ์ง๋ง, ์ผ์ ๋ฆฌ๋ค์ด๋ ํธ ์ ์์ฒญ ๋ฉ์๋์ ๋ณธ๋ฌธ์ ์ ์งํ๋ค
- ์ฆ, ํด๋ผ์ด์ธํธ๊ฐ ์ฒ์์ POST ๋ฉ์๋์ ํจ๊ป ์์ฑํ ๋ฆฌ์์ค ์ ๋ณด๋ฅผ Body ์ ๋ด์ ์ ์กํ์๋ค๋ฉด, ์๋ก์ด URL ๋ก ๋ฆฌ๋ค์ด๋ ํธํ๋๋ผ๋ ๊ทธ ๋ฉ์๋์ Body ๋ด์ฉ์ด ์ ์ง๋๋ ๊ฒ์ด๋ค.
- ๋ค๋ง ์ฒซ ์์ฒญ์ POST๊ฐ ์ฌ์ฉ๋์๋ค๋ฉด, ๋๋ฒ์งธ ์์ฒญ๋ ๋ฐ๋์ POST๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค.
- ํด๋ผ์ด์ธํธ๊ฐ ์์ฒญํ ๋ฆฌ์์ค๊ฐ ๋ค๋ฅธ URI์ ์์ผ๋ฉฐ, ์ด์ ์์ฒญ๊ณผ ๋์ผํ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ์์ฒญํด์ผ ํ ๋ ์๋ต์ผ๋ก ์ด์ฉ๋๋ค.
307๊ณผ 308 ์ฐจ์ด๋ ์๊ตฌ ๋ฆฌ๋ค์ด๋ ์ ์ด๋, ์ผ์ ๋ฆฌ๋ค์ด๋ ์ ์ด๋ ์ฐจ์ด์ด๋ฉฐ, ๋๋ค ๋ฆฌ๋ค์ด๋ ํธ ์ ์์ฒญ ๋ฉ์๋์ ๋ณธ๋ฌธ body๋ฅผ ์ ์งํ๋ค๋ ์ ์ ๋์ผํ๋ค.
308 Permanent Redirect
- Permanent Redirect โข ์๊ตฌ ๋ฆฌ๋ค์ด๋ ์
- 301 Moved Permanently๊ณผ ๊ธฐ๋ฅ์ ๋์ผํ์ง๋ง, ์๊ตฌ ๋ฆฌ๋ค์ด๋ ํธ ์ ์์ฒญ ๋ฉ์๋์ ๋ณธ๋ฌธ์ ์ ์งํ๋ค
- ์ฆ, ํด๋ผ์ด์ธํธ๊ฐ ์ฒ์์ POST ๋ฉ์๋์ ํจ๊ป ์์ฑํ ๋ฆฌ์์ค ์ ๋ณด๋ฅผ Body ์ ๋ด์ ์ ์กํ์๋ค๋ฉด, ์๋ก์ด URL ๋ก ๋ฆฌ๋ค์ด๋ ํธํ๋๋ผ๋ ๊ทธ ๋ฉ์๋์ Body ๋ด์ฉ์ด ์ ์ง๋๋ ๊ฒ์ด๋ค.
- ๋ค๋ง ์ฒซ ์์ฒญ์ POST๊ฐ ์ฌ์ฉ๋์๋ค๋ฉด, ๋๋ฒ์งธ ์์ฒญ๋ ๋ฐ๋์ POST๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค.
- ํด๋ผ์ด์ธํธ๊ฐ ์์ฒญํ ๋ฆฌ์์ค๊ฐ ๋ค๋ฅธ URI์ ์์ผ๋ฉฐ, ์ด์ ์์ฒญ๊ณผ ๋์ผํ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ์์ฒญํด์ผ ํ ๋ ์๋ต์ผ๋ก ์ด์ฉ๋๋ค.
๐ 308 ์ํ์ฝ๋ ํ๋ฆ ์์
- ํด๋ผ์ด์ธํธ๋ '/event' ์ ์ด๋ฒคํธ ํ์ด์ง์ 'name' ๊ณผ 'age' ๋ฐ๋ ์ ๋ณด๋ฅผ ๋ด์ POST ์์ฒญ์ ํ๋ค.
- ์ด ๋ ์๋ฒ๋ 301 Moved Permanently ์ํ์ฝ๋์ Location ํ๋๋ฅผ ํ์ฉํ์ฌ ์ด๋ฒคํธ ํ์ด์ง์ ์ฃผ์๊ฐ '/new-event' ๋ผ๋ ์๋ก์ด ์ฃผ์๋ก ์๊ตฌ์ ๋ณ๊ฒฝ๋์๋ค๋ ์ฌ์ค์ ์๋ฆฌ๊ณ ๋ธ๋ผ์ฐ์ ๋ก ํ์ฌ๊ธ ๋ฆฌ๋ค์ด๋ ํธ๋ฅผ ์ง์ํ๋ค.
- ํด๋ผ์ด์ธํธ๋ ํด๋น Location์ผ๋ก ์๋ ๋ฆฌ๋ค์ด๋ ํธ ๋๋ค.
- ์ฌ๊ธฐ๊น์ง 301๊ณผ ๋์ผํ์ง๋ง, ํด๋ผ์ด์ธํธ๊ฐ ์ฒ์ ์ฌ์ฉํ๋ POST ๋ฉ์๋๊ฐ ์ ์ง๋๊ณ , 'name' ๊ณผ 'age' ์ ๋ณด๊ฐ ๋ณธ๋ฌธ์ ์ ์ง๋์ด ์๋ ๋ชจ์ต์ ํ์ธํ ์ ์๋ค.
๋ณต์ตํด๋ณด์๋ฉด 301 Moved Permanently ์ 308 Permanent Redirect ๋ ๋์ผํ๊ฒ ์๊ตฌ์ ๋ฆฌ๋ค์ด๋ ํธ ์์ฒญ ๊ธฐ๋ฅ์ ์ํํ์ง๋ง, ๋ฉ์๋๋ฅผ GET ์ผ๋ก ๋ณ๊ฒฝํ๊ณ ๋ณธ๋ฌธ ๋ด์ฉ์ ์ญ์ ํ๋๋์ ์์ด ์ค์ํ ์ฐจ์ด์ ์ ๊ฐ์ง๊ฒ ๋๋ค.
# ์ฐธ๊ณ ์๋ฃ
๋ชจ๋ ๊ฐ๋ฐ์๋ฅผ ์ํ HTTP ์น ๊ธฐ๋ณธ ์ง์ - ๊น์ํ
https://developer.mozilla.org/en-US/docs/Web/HTTP/Status
https://feel5ny.github.io/2019/08/17/HTTP_003_03/
https://www.seobility.net/en/wiki/HTTP_302
http://irooti.tistory.com/8
https://kinsta.com/knowledgebase/307-redirect/
https://medium.com/@codebyamir/a-web-developers-guide-to-browser-caching-cc41f3b73e7c