๐ Web(13)
-
[Java] ๋ฌธ์ ์ด์ค์ผ์ด์ค ์ฒ๋ฆฌํ๊ธฐ (feat.html)
์๋ฐ/์คํ๋ง๋ถํธ ํ๊ฒฝ์์ html ํ ํ๋ฆฟ์ ๋ค๋ฃจ๋ ์ค ๋ด๋ถ ๋ฌธ์์ด์์ ํน์ ๋ฌธ์๋ฅผ ์ฌ์ฉํ๋ ๋ถ๋ถ์์ ์๋ฌ๊ฐ ๋ฐ์ํ๋ค. ๋ฌธ์ ๊ฐ ๋ ํน์๋ฌธ์๋ &(ampersand) ์๋ค. ํด๋น ๊ธฐํธ๊ฐ ํฌํจ๋ ๋ฌธ์์ด์ ํ์ฑํ์ง ๋ชปํ๊ณ html ์ ์ด์ค์ผ์ดํ ๋ฌธ์๋ก ๋ณ๋ ์ฒ๋ฆฌ๊ฐ ํ์ํ๋จ ๊ฑธ ์๊ฒ ๋๋ค. ์ด์ค์ผ์ดํ ๋ฌธ์๋ HTML ๋ฌธ์์์ ํน๋ณํ ์๋ฏธ๋ฅผ ๊ฐ์ง๋ ๋ฌธ์๋ฅผ ํํํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ ํน์ ๋ฌธ์๋ฅผ ์๋ฏธํ๋ค. ์ด์ค์ผ์ดํ ๋ฌธ์๋ฅผ ์ฌ์ฉํ๋ฉด ํน์ ๋ฌธ์๊ฐ HTML ํ๊ทธ๋ ์ํฐํฐ๋ก ์ธ์๋์ง ์๊ณ ํ ์คํธ ๊ทธ ์์ฒด๋ก ํํํ ์ ์๋ค. ๊ฐ์ฅ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ๋๋ HTML ์ด์ค์ผ์ดํ ๋ฌธ์๋ ๋ค์๊ณผ ๊ฐ๋ค: : > ๊ธฐํธ๋ฅผ ํ ์คํธ๋ก ํํํ ๋ ์ฌ์ฉ & : & ๊ธฐํธ๋ฅผ ํ ์คํธ๋ก ํํํ ๋ ์ฌ์ฉ " : "..
2023.12.29 -
Refresh Token Rotation ๊ณผ Redis๋ก ํ ํฐ ํ์ทจ ์๋๋ฆฌ์ค ๋์
I. ์๋ก JWT์ Session ๋น๊ต ๋ฐ JWT์ ์ฅ์ ์๊ฐ II. ๋ณธ๋ก Access Token๊ณผ Refresh Token์ ๋์ ์ด์ Refresh Token ์ ์ด๋ป๊ฒ Access Token์ ์ฌ๋ฐ๊ธ์ ๋์์ฃผ๋ ๊ฑธ๊น? Refresh Token Rotation Redis ์ ์ฅ ๋ฐฉ์ ๋ณ๊ฒฝ III. ๊ฒฐ๋ก ์ ๋ฆฌ ์๊ฐํด ๋ณผ ์ ์๋ ๋ฌธ์ ํด๊ฒฐํ๊ณ ์ ํ ๋ฌธ์ JWT๋ก ์ธ์ฆ์ ๊ตฌํํ ๊ฐ๋ฐ์๋ผ๋ฉด ์๋์ ๋ฌธ์ ๋ฅผ ์๊ฐํด ๋ณผ ์ ์๋ค. 1. ์ ํจ๊ธฐ๊ฐ์ด ๊ธด Refresh Token์ด ํ์ทจ๋ ๊ฒฝ์ฐ. -> ์ด ๊ฒฝ์ฐ๋ ๊ฐ๋จํ refresh token rotation ์ ๋ ์ฌ๋ฆด ์ ์๋ค. ํ์ง๋ง ์๋์ ๋ฌธ์ ๊น์ง ์ปค๋ฒํ ์ ์์์ง ์๋ฌธ์ด๋ค. 2. ํ์ทจํ Refresh Token์ผ๋ก ์ ์ ์ ์ ๋ณด๋ค ๋จผ์ Access Token์ ์ฌ..
2023.04.21 -
Web Server ์ WAS ๋ฅผ ์์๋ณด์
๋ชฉ์ฐจ 1. Static Page, Dynamic Page ๋? 2. Web Server์ ๊ฐ๋ ๊ณผ ์ญํ 3. WAS (Web Application Server)์ ๊ฐ๋ ๊ณผ ์ญํ 4. Web Server์ WAS๋ฅผ ๊ตฌ๋ถํ๋ ์ด์ 1. Static Page, Dynamic Page ๋? ๋ธ๋ผ์ฐ์ ๋ ์ ์ ์ปจํ ์ธ ์ ๋์ ์ฝํ ์ธ ๊ฐ ๋ชจ๋ ์กด์ฌํ๋ค. ๋ ์ปจํ ์ธ ์ ๊ฐ๋ ๊ณผ ์ฐจ์ด๋ฅผ ์์๋ณด์. 1 - 1. ์ ์ ์ฝํ ์ธ , static pages ์ ์ ์ปจํ ์ธ ๋ ์๋ฒ์ ์ ์ฅ๋, ๋ชจ๋ ์ฌ์ฉ์์๊ฒ ๋์ผํ๊ฒ ์ ๋ฌ๋๋ ํ์ผ์ ๋ชจ๋ ์ผ์ปซ๋๋ค. ์๋ฒ๋ ํ์ผ ๊ฒฝ๋ก ์ด๋ฆ์ ์์ ๋ฐ๊ณ , ๊ฒฝ๋ก์ ์ผ์นํ๋ File Contents๋ฅผ ์ก์ ํ๋ค. ์ฆ ๋์ผํ ํ์ผ ๊ฒฝ๋ก๋ฅผ ์์ ๋ฐ์ผ๋ฉด, ๋์ผํ ํ์ด์ง(file contents)๋ฅผ ๋ฐํํ๋ค. ์ด๋ฅผ ์ ์ ํ์ด์ง(St..
2022.12.24 -
REST API ๋์์ธ 15๊ฐ์ง ํ
์ฌ์ด๋ ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉด์ ์ฌ๋ฐ๋ฅธ REST API ๋์์ธ์ ์์งํด์ผ๊ฒ ๋ค๊ณ ๋๊ปด ์๋ ํฌ์คํธ๋ฅผ ๋ฒ์ญํ๊ฒ ๋์ต๋๋ค (์ฝ๊ฐ์ ์์ญ์ด ์์ ์ ์์ต๋๋ค) ์คํ๋ ์ค์ญ์ด ์์ ๊ฒฝ์ฐ ๋๊ธ๋ก ์๋ ค์ฃผ์๋ฉด ๋น ๋ฅด๊ฒ ์์ ํ๋๋ก ํ๊ฒ ์ต๋๋ค. 15 fundamental tips on REST API design REST APIs are one of the most common types of web services available, but they’re also hard to design. They allow various clients including… medium.com REST API ๋ ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ์น ์๋น์ค ๋์์ธ์ผ๋ก ์๋ ค์ ธ ์์ง๋ง ๋์์ ์ค๊ณํ๊ธฐ ์ด๋ ค์ด ํน์ง๋ ์๋ค. ๋ธ๋ผ์ฐ์ , ๋ฐ์คํฌํฑ ์ฑ, ๋ชจ๋ฐ์ผ ์ ํ๋ฆฌ์ผ์ด..
2022.05.13 -
ํฌ์๋ ํ๋ก์ ์ ๋ฆฌ๋ฒ์ค ํ๋ก์ (forward proxy, reverse proxy)
๋ค์ด๊ฐ๊ธฐ ์ ์ ๋ณธ ํฌ์คํ ์ HAProxy ๋ฅผ ์ค๋ช ํ๊ธฐ ์ํ ๋น๋์ ๋จ๊ณ๋ก, proxy ์ forward proxy, reverse proxy ์ ์ ๋ฐ์ ์ธ ๋ด์ฉ์ ๋ค๋ฃน๋๋ค. Proxy ๋ ๋ฌด์์ธ๊ฐ? HAProxy ๋ฅผ ์ค๋ช ํ๊ธฐ ์ , ์ฐ์ Proxy(ํ๋ก์)์ ์๋ฏธ๋ฅผ ์์๋ณด๊ฒ ์ต๋๋ค. proxy ๋ ๋๋ฆฌ, ๋๋ฆฌ์ธ์ด๋ผ๋ ๋ป์ผ๋ก proxy server ๋ ๋ณธ ์๋ฒ๋ฅผ ๋์ ํ์ฌ ์ด๋ค ์ผ์ ํํ๋ ์๋ฒ์์ ์ ์ถํ ์ ์์ต๋๋ค. ์น์ ํด๋ผ์ด์ธํธ์์ ์๋ฒ๋ก, ์๋ฒ์์ ํด๋ผ์ด์ธํธ๋ก ํต์ ํ๋ฉฐ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํฉ๋๋ค. ์ด๋ ํ์ฐ์ ์ผ๋ก ์ค๋ณต๋๋ ๋ฐ์ดํฐ๋ฅผ ๋ฐ๋ณตํ์ฌ ์ ๋ฌํ๋ ์ํฉ์ด ๋ฐ์ํ๋๋ฐ, ์ด๋ ๊ฒ ๋์ผํ ์์ฒญ์ ๋งค๋ฒ ์ฒ๋ฆฌํ๋ ๊ฒ์ ๊ณง ๋ฆฌ์์ค ๋ญ๋น ์ ์๋ฒ์ ๋ถํ ๋ก ์ด์ด์ง๋๋ค. ๋๋ฌธ์ ๋ณธ ์๋ฒ์ ๋๋ฌํ๊ธฐ ์ ์ ์๋ก์ด ์๋ฒ(proxy ..
2021.08.24 -
HTTP 401(Unauthorized), 403(Forbidden) ์ฐจ์ด
4xx ๋ ์๋ฌ๋ ํด๋ผ์ด์ธํธ ์ธก์์ ์๋ชป๋ ์์ฒญ(request)์ ๋ณด๋์ ๋ ๋ฐ์ํ๋ ์๋ฌ์ ๋๋ค. ๊ทธ ์ค 401 ์๋ฌ์ 403 ์๋ฌ๋ ๋ชจ๋ ์ธ์ฆ์ด ์๋์ ๋ ๋ฐ์ํ๋๋ฐ, ์ด ์ฐจ์ด๋ฅผ ์์๋ณด๊ฒ ์ต๋๋ค. 1. 401 Unauthorized ์๋ฌ - HTTP ์ํ ์๋ฌ ์ค 401์, ํด๋ผ์ด์ธํธ๊ฐ ์ธ์ฆ๋์ง ์์์ ๋ ๋ฐ์ํ๋ ์๋ฌ์ ๋๋ค. ์ธ์ฆ๋์ง ์์ ๊ฒฝ์ฐ๋, ์ฝ๊ฒ ๋งํด ๋ก๊ทธ์ธ์ ํ์ง ์์์ ๋, ์ด๋ ต๊ฒ ๋งํด request ํค๋์ ์ ํจํ ์ธ์ฆ ์ ๋ณด๊ฐ ํฌํจ๋์ง ์์์ ๋๋ฅผ ์๋ฏธํฉ๋๋ค. ์ฆ ํด๋ผ์ด์ธํธ๊ฐ ํด๋น ์์ฒญ์ ๊ถํ์ด ์์ ๋, ์ด๋ฅผ ๊ธ์ง(Forbidden)์ํค๋ ์๋ฌ์ ๋๋ค. ์ฐ๋ฆฌ๊ฐ ํํ ๋ก๊ทธ์ธ ํ์ง ์์ ์ํ์์ ๊ธ์ ์์ฑํ๊ฑฐ๋ ๋ง์ดํ์ด์ง๋ฅผ ์กฐํํ๋ ค๊ณ ํ ๋ ์๋ฒ๋ 401 ์๋ฌ๋ฅผ ๋ฐํํฉ๋๋ค. AccessToken..
2021.06.20 -
7. HTTP ํค๋ 2 - ์บ์์ ์กฐ๊ฑด๋ถ ์์ฒญ
๋ณธ ํฌ์คํ ์ ์ฐ์ํ ํ์ ๋ค, ๊น์ํ ๋์ '๋ชจ๋ ๊ฐ๋ฐ์๋ฅผ ์ํ HTTP ์น ๊ธฐ๋ณธ ์ง์' ๊ฐ์๋ฅผ ์๊ฐ ํ ์ ๋ฆฌํ ๊ธ์ ๋๋ค. 1. ์บ์ ๊ธฐ๋ณธ ๋์ -> ์๋์ ๊ฐ์ด star ์ด๋ฏธ์ง๋ฅผ ์์ฒญํ๋ฉด 1.1Mbyte ์ฉ๋์ ๋ฐ์ดํฐ๊ฐ ์ ์ก๋๋ค (ํค๋ + ์ด๋ฏธ์ง ์ฉ๋). -> ์บ์๊ฐ ์์ ๋, ๋๋ฒ์งธ ์์ฒญ์ ํ๋ค๋ฉด ๋๊ฐ์ด 1.1Mbyte ์ฉ๋์ ๋ฐ์ดํฐ๊ฐ ์ ์ก๋๋ค (๊ฐ์ ์์ฒญ์ด๋, ๊ฐ์ ์ฉ๋ ์ ์ก) 2. ์บ์๊ฐ ์์ ๋, -> ์๋ฒ์ธก์ ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋์ง ์์๋ ๊ณ์ ๋คํธ์ํฌ๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ๋ค์ด๋ฐ์์ผ ํ๋ค. -> ๋๋ฆฌ๊ณ ๋น์ธ๋ฉฐ, ๋ธ๋ผ์ฐ์ ๋ก๋ฉ ์๋๊ฐ ๋๋ฆฌ๋ค = ๋๋ฆฐ ์ฌ์ฉ์ ๊ฒฝํ (slow ux) 3. ์บ์ ์ ์ฉํ ๋, -> 1.1Mbyte์ ๋ฐ์ดํฐ๋ฅผ ์บ์ ์ ์ฅ์์ ์ ์ฅํ๋ค. -> ๋๋ฒ์งธ ์์ฒญ์์ ์น ๋ธ๋ผ์ฐ์ ๋ ๋คํธ์ํฌ๋ฅผ ..
2021.01.17 -
7. HTTP ํค๋ 1 - ์ผ๋ฐ ํค๋
๋ณธ ํฌ์คํ ์ ์ฐ์ํ ํ์ ๋ค, ๊น์ํ ๋์ '๋ชจ๋ ๊ฐ๋ฐ์๋ฅผ ์ํ HTTP ์น ๊ธฐ๋ณธ ์ง์' ๊ฐ์๋ฅผ ์๊ฐ ํ ์ ๋ฆฌํ ๊ธ์ ๋๋ค. ํค๋๋ ํฌ๊ฒ ์ผ๋ฐ ํค๋์ ์บ์/์กฐ๊ฑด๋ถ ํค๋ 2๊ฐ์ง๋ก ๋๋๋ค. 1. HTTP ํค๋ ์ฉ๋ -> HTTP ์ ์ก์ ํ์ํ ๋ชจ๋ ๋ถ๊ฐ ์ ๋ณด ํฌํจ -> ex) ๋ฉ์์ง ๋ฐ๋์ ๋ด์ฉ ๋ฐ ํฌ๊ธฐ, ์์ถ, ์ธ์ฆ, ์์ฒญ ํด๋ผ์ด์ธํธ, ์๋ฒ ๋ฑ 2. ํ์ค ํค๋๋ ๋๋ฌด ๋ง์ด ์กด์ฌ -> ref: en.wikipedia.org/wiki/List_of_HTTP_header_fields 3. ๊ณผ๊ฑฐ HTTP ํค๋ (RFC2616) -> ๊ณผ๊ฑฐ์ header๋ฅผ ํฌ๊ฒ 4๊ฐ์ง๋ก ๋ถ๋ฅ General header: ๋ฉ์์ง ์ ์ฒด์ ์ ์ฉ๋๋ ์ ๋ณด Request header: ์์ฒญ ์ ๋ณด Response header: ์๋ต ์ ๋ณด Enti..
2021.01.11 -
5. HTTP ๋ฉ์๋ ํ์ฉ
๋ณธ ํฌ์คํ ์ ์ฐ์ํ ํ์ ๋ค, ๊น์ํ ๋์ '๋ชจ๋ ๊ฐ๋ฐ์๋ฅผ ์ํ HTTP ์น ๊ธฐ๋ณธ ์ง์' ๊ฐ์๋ฅผ ์๊ฐ ํ ์ ๋ฆฌํ ๊ธ์ ๋๋ค. 1. ํด๋ผ์ด์ธํธ -> ์๋ฒ๋ก ๋ฐ์ดํฐ ์ ์ก -> ๋ฐ์ดํฐ ์ ์ก ๋ฐฉ์์ ํฌ๊ฒ 2๊ฐ์ง: ์ฟผ๋ฆฌ ํ๋ผ๋ฏธํฐ๋ฅผ ํตํ ๋ฐ์ดํฐ ์ ์ก ๋ฉ์์ง ๋ฐ๋๋ฅผ ํตํ ๋ฐ์ดํฐ ์ ์ก -> ๋ฐ์ดํฐ ์ ์ก ์ํฉ์ ํฌ๊ฒ 4๊ฐ์ง ์ ์ ๋ฐ์ดํฐ ์กฐํ: ์ด๋ฏธ์ง, ์ ์ ํ ์คํธ ๋ฌธ์ ๋์ ๋ฐ์ดํฐ ์กฐํ: ์ฃผ๋ก ๊ฒ์, ๊ฒ์ํ ๋ชฉ๋ก์์ ์ ๋ ฌ ํํฐ(๊ฒ์์ด) HTML Form ํตํ ๋ฐ์ดํฐ ์ ์ก: ํ์๊ฐ์ , ์ํ ์ฃผ๋ฌธ, ๋ฐ์ดํฐ ๋ณ๊ฒฝ HTTP API ํตํ ๋ฐ์ดํฐ ์ ์ก: ํ์๊ฐ์ , ์ํ ์ฃผ๋ฌธ, ๋ฐ์ดํฐ ๋ณ๊ฒฝ + ์๋ฒto์๋ฒ, ์ฑ ํด๋ผ์ด์ธํธ, ์น ํด๋ผ์ด์ธํธ 2. ์ ์ ๋ฐ์ดํฐ ์กฐํ -> ์ฟผ๋ฆฌ ํ๋ผ๋ฏธํฐ ๋ฏธ์ฌ์ฉ ( ๊ทธ๋ ๋ค๊ณ ๋ฉ์์ง ๋ฐ๋๋ฅผ ์ฌ์ฉํ์ง๋ ์์ -> ..
2021.01.03