π HTTP ν€λμ μ©λ
- HTTP μ μ‘μ νμν λͺ¨λ λΆκ°μ 보
- νμμ μμμ ν€λλ₯Ό μΆκ°ν μ μλ€.
- Ex) λ©μμ§ λ°λμ λ΄μ©, λ©μμ§ λ°λμ ν¬κΈ°, μμΆ, μΈμ¦, μλ² μ 보 λ±λ±μ΄ ν¬ν¨λμ΄μλ€.
π HTTPμ νν νμ
field-name":" OWS field-value OWS (OWSλ λμ΄μ°κΈ° νμ©μ΄λΌλ λ»)
π κ³Όκ±°μ HTTP ν€λ (RFC2616)
- General ν€λ : λ©μμ§ μ 체μ μ μ©λλ μ 보 ( ex) Connectiond : close )
- Request ν€λ : μμ² μ 보 ( ex) User-Agent: Mozilla/5.0 (Macintosh;... )
- Response ν€λ : μλ΅ μ 보 ( ex) Server: Apache )
- Entity ν€λ : μν°ν° λ°λ μ 보 ( ex) Content-Type: text/html, Content-Length: 3423 )
π κ³Όκ±° HTTP λ°λ (RFC2616)
- λ©μμ§ λ³Έλ¬Έ(message body)μ μν°ν° λ³Έλ¬Έ(entity body)μ μ λ¬νλ λ° μ¬μ©
- μν°ν° λ³Έλ¬Έμ μμ²μ΄λ μλ΅μμ μ λ¬ν μ€μ λ°μ΄ν°
- μν°ν° ν€λλ μν°ν° λ³Έλ¬Έμ λ°μ΄ν°λ₯Ό ν΄μν μ μλ μ 보λ₯Ό μ 곡νλ€. ( λ°μ΄ν° μ ν(html, json), λ°μ΄ν° κΈΈμ΄...)
π νλμ HTTP (RFC7230)
νν = νν ν€λ + νν λ°μ΄ν°
- λ©μμ§ λ³Έλ¬Έ(body)μ ν΅ν΄ νν λ°μ΄ν° μ λ¬
- λ©μμ§ λ³Έλ¬Έ = νμ΄λ‘λ (payload)
- ννμ μμ²μ΄λ μλ΅μμ μ λ¬ν μ€μ λ°μ΄ν°
- νν ν€λλ νν λ°μ΄ν°λ₯Ό ν΄μν μ μλ μ 보λ₯Ό μ 곡 (λ°μ΄ν° μ ν (json, html), λ°μ΄ν° κΈΈμ΄...)
β νν ν€λλ νν λ©νλ°μ΄ν°μ νμ΄λ‘λ λ©μμ§λ₯Ό ꡬλΆν΄μΌ λ¨
β νν
- Content-Type : νν λ°μ΄ν°μ νμ
- Content-Encoding : νν λ°μ΄ν°μ μμΆ λ°©μ
- Content-Language : νν λ°μ΄ν°μ μμ° μΈμ΄
- Content-Length : νν λ°μ΄ν°μ κΈΈμ΄
νν ν€λλ μ μ‘, μλ΅μ λ λ€ μ¬μ©νλ€.
[ Content-Type ]
λ―Έλμ΄ νμ , λ¬Έμ μΈμ½λ©
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 16
{"data":"hello"}
HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
Content-Length: 3423
<html>
<body>..</body>
</html>
- text/html; charset=UTF-8
- application/json ( jsonμ UTF-8μ΄ κΈ°λ³ΈμΌλ‘ μ μ©λμ΄μλ€. )
- image/png
[ Content-Encoding ]
HTTP/1.1 200 OK
Content-Type: text/html;charset=UTF-8
Content-Encoding: gzip
Content-Length: 521
lkj123kljoiasudlkjaweioluywlnfdo912u34ljko98udjkl
- νν λ°μ΄ν°λ₯Ό μμΆνκΈ° μν΄ μ¬μ©
- λ°μ΄ν°λ₯Ό μ λ¬νλ κ³³μμ μμΆ ν μΈμ½λ© ν€λ μΆκ°
- λ°μ΄ν°λ₯Ό μ½λ μͺ½μμ μΈμ½λ© ν€λμ μ λ³΄λ‘ μμΆ ν΄μ
- gzip, deflate, identity
[ Content-Language ]
Content-Language: ko
- νν λ°μ΄ν°μ μμ° μΈμ΄λ₯Ό νν
- ko, en, en-US ...
[ Content-Length ]
Content-Length: 5
- λ°μ΄νΈ λ¨μ
- Transfer-Encoding(μ μ‘ μ½λ©)μ μ¬μ©νλ©΄ Content-Lengthλ₯Ό μ¬μ©νλ©΄ μ λλ€.
π νμ (μ½ν μΈ λ€κ³ μμμ΄μ )
- Accept : ν΄λΌμ΄μΈνΈκ° μ νΈνλ λ―Έλμ΄ νμ μ λ¬
- Accept-Charset : ν΄λΌμ΄μΈνΈκ° μ νΈνλ λ¬Έμ μΈμ½λ©
- Accept-Encoding : ν΄λΌμ΄μΈνΈκ° μ νΈνλ μμΆ μΈμ½λ©
- Accept-Language : ν΄λΌμ΄μΈνΈκ° μ νΈνλ μμ° μΈμ΄
μ΄λ κ² Accept-Languageλ₯Ό μ μ©νμ§ μμΌλ©΄ μλ²μμ κ°μ₯ μ°μ μμκ° λμ μΈμ΄λ₯Ό μ 곡νλ€.
λ°λΌμ λ΄κ° koλ₯Ό μνλ€λ©΄ Accept-Languageλ₯Ό μμ±ν΄μ 보λ΄μΌ νλ€.
μ΄λ κ² Accept-Language: koλ₯Ό μμ±ν΄μ 보λ΄λ©΄ νκ΅μ΄λ‘ μ μ©μ΄ λλ€.
νμ§λ§ νκ΅μ΄λ₯Ό μ§μνμ§ μλ μλ²κ° μλλ°, λ΄κ° νκ΅μ΄κ° μ§μλλμ§ μλλμ§ λͺ¨λ₯Ό κ²½μ°μλ μ°μ μμλ₯Ό μ§μ ν΄μ μμ±ν΄μΌ νλ€. μ°μ μμλ₯Ό μμ±ν΄μ£Όμ§ μλλ€λ©΄,
μ΄λ κ² μλ²μμ κ°μ₯ μ°μ μμκ° λμ μΈμ΄λ₯Ό λ°ννλ€. μ΄λ΄ κ²½μ°μ μ°λ¦¬κ° νκ΅μ΄ μ§μμ΄ μλλ©΄, μμ΄λ‘ λνλκ² νλ €λ©΄ μΈμ΄ μ¬μ΄μ μ°μ μμλ₯Ό μ ν΄μ€μΌ νλ€.
π
[ νμκ³Ό μ°μ μμ 1 ]
GET /event
Accept-Language: ko-KR, ko;q=0.9, en-US;q=0.8,en;q=0.7
- Quality Values(q) κ° μ¬μ©
- 0~1, ν΄μλ‘ λμ μ°μ μμμ΄λ€.
- μλ΅νλ©΄ 1
β μμ λ€λͺ¨μΉΈμ²λΌ μμ±ν΄μ 보λ΄λ©΄, λ μΌμ΄κ° μλ μμ΄λ₯Ό μ§μνκ² λλ€.
[ νμκ³Ό μ°μ μμ2 ]
- ꡬ체μ μΈ κ²μ΄ μ°μ μ΄λ€.
GET /event
Accept: text/*, text/plain, text/plain;format=flowed, */*
- text/plain;format=flowed
- text/plain
- text/*
- */*
[ νμκ³Ό μ°μ μμ 3 ]
- ꡬ체μ μΈ κ²μ κΈ°μ€μΌλ‘ λ―Έλμ΄ νμ μ λ§μΆλ€.
π μ μ‘ λ°©μ
- λ¨μ μ μ‘
- μμΆ μ μ‘
- λΆν μ μ‘
- λ²μ μ μ‘
[ λ¨μ μ μ‘ ]
ν λ²μ λͺ¨λ μμ²νκ³ , νλ²μ μ λ°μ μ μλ λ°©λ²μ΄λ€.
[ μμΆ μ μ‘ ]
β μμΆ μ μ‘μ νλ €λ©΄ 무쑰건 Content-Encoding: gzipμ μΆκ°ν΄μ€μΌ νλ€.
[ λΆν μ μ‘ ]
λΆν λ‘ μͺΌκ°μ 보λ΄κ³ μΆμ λλ Transfet-Encoding: chunkedλ₯Ό μμ±ν΄μΌ νλ€.
μ¬κΈ°μ Content-Lengthλ₯Ό μ¬μ©νλ©΄ μ λ μ λλ€.
[ λ²μ μ μ‘ ]
2000λ°μ΄νΈ μ€μμ μ λ°λΆν° λλ¨Έμ§μ μ 보λ₯Ό 보λ΄λ¬λΌλ λ»μ΄λ€.
π μΌλ° μ 보
- From : μ μ μμ΄μ νΈμ μ΄λ©μΌ μ 보
- Referer : μ΄μ μΉνμ΄μ§ μ£Όμ
- User-Agent: μ μ μμ΄μ νΈ μ ν리μΌμ΄μ μ 보
- Server : μμ²μ μ²λ¦¬νλ μ€λ¦¬μ§ μλ²μ μννΈμ¨μ΄ μ 보
- Date : λ©μμ§κ° μμ±λ λ μ§
[ From ]
- μΌλ°μ μΌλ‘ μ μ¬μ©νμ§ μλλ€.
- κ²μ μμ§ κ°μ κ³³μμ μ£Όλ‘ μ¬μ©νλ€.
- μμ²μμ μ¬μ©νλ€.
[ Referer ] β
- νμ¬ μμ²λ νμ΄μ§μ μ΄μ μΉ νμ΄μ§ μ£Όμ
- A -> Bλ‘ μ΄λνλ κ²½μ°, Bλ₯Ό μμ²ν λ Referer: Aλ₯Ό ν¬ν¨ν΄μ μμ²νλ€.
- Refererλ₯Ό μ¬μ©ν΄μ μ μ κ²½λ‘ λΆμ κ°λ₯
- μμ²μμ μ¬μ©νλ€.
κ΅¬κΈ νλ©΄μμ 무μμ κ²μνκ³ λμ ν€λ μ 보λ₯Ό νμΈν΄λ³΄λ©΄ μ λ κ² refererκ° κ΅¬κΈ μ£Όμλ‘ λμ΄μλ κ²μ λ³Ό μ μλ€.
[ User-Agent ]
- ν΄λΌμ΄μΈνΈμ μ ν리μΌμ΄μ μ 보 (μΉ λΈλΌμ°μ μ 보 λ±λ±)
- ν΅κ³ μ 보
- μ΄λ€ μ’ λ₯μ λΈλΌμ°μ μμ μ₯μ κ° λ°μνλμ§ νμ κ°λ₯
- μμ²μμ μ¬μ©
[ Server ]
- Server: Apache/2.2.22(Debian)
- server: nginx
- μλ΅μμ μ¬μ©νλ€.
[ Date ]
- Date: Tue, 15 Nov 1994 08:12:31 GMT (GMT κΈ°μ€μΌλ‘ μμ±λμ΄μλ€.)
- μλ΅μμ μ¬μ©νλ€.
π νΉλ³ν μ 보
- Host : μμ²ν νΈμ€νΈ μ 보(λλ©μΈ)
- Location : νμ΄μ§ 리λ€μ΄λ μ
- Allow : νμ© κ°λ₯ν HTTP λ©μλ
- Retry-After : μ μ μμ΄μ νΈκ° λ€μ μμ²μ νκΈ°κΉμ§ κΈ°λ€λ €μΌ νλ μκ°
[ Host ]
GET /search?q=hello&hl=ko HTTP/1.1
Host: www.google.com
- μμ²μμ μ¬μ©νλ€.
- νμμ΄λ€.
- νλμ μλ²κ° μ¬λ¬ λλ©μΈμ μ²λ¦¬ν΄μΌ ν λ
- νλμ IPμ£Όμμ μ¬λ¬ λλ©μΈμ΄ μ μ©λμ΄ μμ λ
[ Location ]
- μΉ λΈλΌμ°μ λ 3xxμλ΅μ κ²°κ³Όμ Location ν€λκ° μμΌλ©΄, Location μμΉλ‘ μλ μ΄λνλ€. (리λ€μ΄λ νΈ)
- 201(Create) : Location κ°μ μμ²μ μν΄ μμ±λ 리μμ€ URI
- 2xx(Redirection) : Location κ°μ μμ²μ μλμΌλ‘ 리λλ μ νκΈ° μν λμ 리μμ€λ₯Ό κ°λ¦¬ν¨λ€.
[ Allow ]
- 405 (Method Not Allowed)μμ μλ΅μ ν¬ν¨ν΄μΌ νλ€.
- Allow: GET, HEAD, PUT
- μλ²μμ λ§μ΄ ꡬννμ§ μλλ€.
[ Retry-After ]
- 503 (Service Unavailable) : μλΉμ€κ° μΈμ κΉμ§ λΆλ₯μΈμ§ μλ €μ€ μ μλ€.
- Retry-After: Fri, 31 Dec 1999 23:59:59 GMT (λ μ§ νκΈ°)
- Retry-After: 120 (μ΄λ¨μ νκΈ°)
πͺ μΏ ν€ πͺ
- Set-Cookie : μλ²μμ ν΄λΌμ΄μΈνΈλ‘ μΏ ν€ μ λ¬ (μλ΅)
- Cookie : ν΄λΌμ΄μΈνΈκ° μλ²μμ λ°μ μΏ ν€λ₯Ό μ μ₯νκ³ , HTTP μμ² μ μλ²λ‘ μ λ¬νλ€.
[ μΏ ν€ λ―Έμ¬μ© νμ λ ]
HTTPλ 무μν(stateless)νλ‘ν μ½μ΄λ€.
λ°λΌμ ν΄λΌμ΄μΈνΈμ μλ²κ° μμ²κ³Ό μλ΅μ νλ² μ£Όκ³ λ°μΌλ©΄ μ°κ²°μ΄ λμ΄μ§λ€.
κ·Έλμ λ‘κ·ΈμΈμ νκ³ λμλ κ·Έ μ λ‘κ·ΈμΈμ νλ μμ²μ λν μ 보λ₯Ό κΈ°μ΅νμ§ λͺ»νλ€.
무μνλ‘ μ€κ³νλ©΄μ μ λ³΄κ° μ μ§λκ² νλ €λ©΄ λͺ¨λ μμ²μ μ¬μ©μ μ 보λ₯Ό λκ²¨μΌ νλλ°,
μ΄κ±΄ λ무 볡μ‘νλ€.
κ·Έλμ μΏ ν€λ₯Ό μ¬μ©νκ² λλ€.
[ μΏ ν€λ₯Ό μ¬μ©νμ λ ]
β μΏ ν€λ νμ μλ²μ μ μ‘λκΈ° λλ¬Έμ 보μμ λ―Όκ°ν λ°μ΄ν°λ μ μ₯νλ©΄ μ λλ€.
[ μλͺ μ£ΌκΈ° ]
- Set-Cookie: expire=Sat, 26-Dec-2020 04:39:21 GMT (λ§λ£λλ©΄ μΏ ν€κ° μμ λλ€)
- Set-Cookie: max-age=3600 (3600μ΄λ₯Ό μλ―Ένλ€. 0μ΄λ μμλ₯Ό μ§μ νλ©΄ μΏ ν€κ° μμ λλ€)
- μΈμ μΏ ν€ : λ§λ£ λ μ§λ₯Ό μλ΅νλ©΄ λΈλΌμ°μ μ’ λ£ μκΉμ§λ§ μ μ§νλ€.
- μμ μΏ ν€ : λ§λ£ λ μ§λ₯Ό μ λ ₯νλ©΄ ν΄λΉ λ μ§κΉμ§ μ μ§νλ€.
[ λλ©μΈ ]
domain=example.org
- λͺ μ : λͺ μν λ¬Έμ κΈ°μ€ λλ©μΈ + μλΈ λλ©μΈ ν¬ν¨
- μλ΅ : νμ¬ λ¬Έμ κΈ°μ€ λλ©μΈλ§ μ μ©
[ κ²½λ‘ ]
path=/home
- μ΄ κ²½λ‘λ₯Ό ν¬ν¨ν νμ κ²½λ‘ νμ΄μ§λ§ μΏ ν€ μ κ·Ό
- μΌλ°μ μΌλ‘λ path=/ 루νΈλ‘ μ§μ νλ€.
[ 보μ ]
βΎ Secure
- μΏ ν€λ http, httpsλ₯Ό ꡬλΆνμ§ μκ³ μ μ‘νλ€.
- Secureμ μ μ©νλ©΄ httpsμΈ κ²½μ°μλ§ μ μ‘νλ€. (httpsκ° httpλ³΄λ€ λ³΄μμ΄ λ λκΈ° λλ¬Έμ΄λ€.)
βΎ HttpOnly
- XSS 곡격 λ°©μ§
- μλ°μ€ν¬λ¦½νΈμμ μ κ·Ό λΆκ° (document.cookie)
- HTTP μ μ‘μλ§ μ¬μ©νλ€.
βΎ SameSite
- XSRF곡격 λ°©μ§
- μμ² λλ©μΈκ³Ό μΏ ν€μ μ€μ λ λλ©μΈμ΄ κ°μ κ²½μ°λ§ μΏ ν€ μ μ‘
μ£Όμμ νμ λ€μ΄κ°λ HTTPκ° μ΅μνκΈ΄ νμ§λ§ κ°λ μ μ‘μ 건 μ²μμ΄μλ€. μ§μ νμ΄μ§μ F12λ₯Ό ν΄λ¦ν΄ μμ μ 보λ₯Ό νλμ© λ€ νμΈνκ³ λλκΉ λ무 μ κΈ°νλ€π
μ΄ κΈμ μΈνλ° κΉμνλμ λͺ¨λ κ°λ°μλ₯Ό μν HTTPκΈ°λ³Έμ§μμ λ£κ³ μμ±λ λ³΅μ΅ κ²Έ μ 리 ν¬μ€ν μ λλ€.
'Network' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Network] 401 Error vs 403 Error (0) | 2023.07.14 |
---|---|
[HTTP μλ²½ κ°μ΄λ] 1 μΉμ κΈ°μ΄ : 01 HTTP κ°κ΄ (0) | 2022.07.07 |
HTTP μνμ½λ μ 리 (0) | 2021.07.23 |
HTTP κΈ°μ΄ [URL/Stateless/λΉμ°κ²°μ±] (0) | 2021.07.21 |
HTTP κΈ°μ΄ [μΈν°λ· λ€νΈμν¬/IP/TCP/ UDP] (0) | 2021.07.21 |