HTTP νν ν€λ
by rlaehddnd0422
- message body(νμ΄λ‘λ)λ₯Ό ν΅ν΄ νν λ°μ΄ν° μ λ¬ν©λλ€.
- νν λ°μ΄ν°λ μμ²μ΄λ μλ΅μμ μ λ¬ν μ€μ λ°μ΄ν°
- νν ν€λλ νν λ°μ΄ν°λ₯Ό ν΄μν μ μλ μ 보λ₯Ό μ 곡
- ν΄μ μ 보 -> λ°μ΄ν° μ ν, λ°μ΄ν° κΈΈμ΄, μμΆ μ 보 λ±
μ°Έκ³ : νν ν€λλ νν λ©ν λ°μ΄ν°μ, νμ΄λ‘λ λ©μμ§λ₯Ό ꡬλΆν΄μΌ νμ§λ§, μ¬κΈ°μλ μλ΅νκ² μ΅λλ€.
νν ν€λμ νν
> Content Type : νν λ°μ΄ν°μ νμ
> Content-Length : νν λ°μ΄ν°μ κΈΈμ΄
> Content-Encoding : νν λ°μ΄ν°μ μμΆ λ°©μ
> Content-Language : νν λ°μ΄ν°μ μμ° μΈμ΄
>> νν ν€λλ μμ²(request), μλ΅(response) λλ€ μ¬μ©
Content Type (νν λ°μ΄ν° νμ μ€λͺ )
HTTP/1.1 200 OK
Content-Type: text/html;charset=UTF-8
Content-Length: 3423
<html> <body>...</body>
</html>
> λ―Έλμ΄ νμ , λ¬Έμ μΈμ½λ©
ex) text/html; charset=utf-8
ex) application/json
ex) image/png
Content-Length (νν λ°μ΄ν°μ κΈΈμ΄)
HTTP/1.1 200 OK
Content-Type: text/html;charset=UTF-8 Content-Length: 5
hello
> λ°μ΄νΈ λ¨μ
> Transfer-Encoding(λΆν μ μ‘) μ μ¬μ©νλ©΄ Content-Lengthλ₯Ό μ¬μ©νλ©΄ μλ¨. ... λ°μμ μμΈν μ€λͺ
Content-Encoding (νν λ°μ΄ν° μΈμ½λ©)
HTTP/1.1 200 OK
Content-Type: text/html;charset=UTF-8
Content-Encoding: gzip
Content-Length: 521
lkj123kljoiasudlkjaweioluywlnfdo912u34lj ko98udjkl
> νν λ°μ΄ν°λ₯Ό μμΆνκΈ° μν΄ μ¬μ©
> λ°μ΄ν°λ₯Ό μ λ¬νλ κ³³μμ μμΆν μΈμ½λ© ν€λ μΆκ°
> λ°μ΄ν°λ₯Ό μ½λ μͺ½μμ μΈμ½λ© ν€λμ μ λ³΄λ‘ μμΆ ν΄μ
ex) gzie, deflate, identity
Content-Language(νν λ°μ΄ν°μ μμ°μΈμ΄)
νν λ°μ΄ν°μ μμ° μΈμ΄λ₯Ό νν
HTTP/1.1 200 OK
Content-Type: text/html;charset=UTF-8
Content-Language: ko
Content-Length: 521
<html> μλ
νμΈμ.
</html>
Content Negotiation (μ½ν μΈ λ€κ³ μμμ΄μ )
ν΄λΌμ΄μΈνΈκ° μ νΈνλ νν request
ν΄λΌμ΄μΈνΈκ° μνλ μ°μ μ μΈ νμ μ΄λ μΈμ½λ©λ°©μ, μμΆλ°©μ, μΈμ΄λ₯Ό μλ²μ μμ²ν μ μμ΄μ.
- Accept : ν΄λΌμ΄μΈνΈκ° μ νΈνλ λ―Έλμ΄ νμ μ λ¬
- Accept-charset : ν΄λΌμ΄μΈνΈκ° μ νΈνλ λ¬Έμ μΈμ½λ©
- Accept-Encoding : ν΄λΌμ΄μΈνΈκ° μ νΈνλ μμΆ μΈμ½λ©
- Accept-Language : ν΄λΌμ΄μΈνΈκ° μ νΈνλ μμ° μΈμ΄
νμ ν€λλ Requestν λλ§ μ¬μ©ν©λλ€.
GET /event
Accept-Language: ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7
q(0~1)κ°μ μ¬μ©ν΄μ μ°μ μμλ₯Ό μ ν μ μμ΅λλ€.
μλ΅νλ©΄ 1
GET /event
Accept: text/*, text/plain, text/plain;format=flowed, */*
qκ°μ μ€μ νμ§ μμΌλ©΄ ꡬ체μ μΈ κ²μ κΈ°μ€μΌλ‘ μ°μ ν©λλ€
μ°μ μμ
1. text/*
2. text/plain
3. text/plain;format=flowed
4. */*
HTTP - μ μ‘ λ°©μ ν€λ
Content-Length(λ¨μ μ μ‘)
Content-Lengthλ§ λ΄μμ Response λ©μμ§λ₯Ό 보λ΄λ©΄ λ¨μ μ μ‘μ λλ€.
βοΈκ·Έλ₯ λ¨μνκ² message bodyλ₯Ό 보λΈλ€κ³ μκ°νμλ©΄ λ©λλ€.
Transfer-Encoding(λΆν μ μ‘)
λ³΄λΌ message bodyλ₯Ό λλ μ μ μ‘νλ λ°©μμ λλ€.
βοΈνλΌλ―Έν°λ‘ Transfer-Encodingμ΄ λ€μ΄κ°λλ€.
ex) Transfer-Encoding : chunked
βοΈμ΄ λλ Content-Lengthλ₯Ό μ¬μ©νλ©΄ μλ©λλ€.
Range, Content-Encoding(λ²μ μ μ‘)
βοΈ νλΌλ―Έν°λ‘ Content-Range κ° λ€μ΄κ°λλ€.
ex) Content-Range : bytes 1001-2000 / 2000
μ 체λ₯Ό μ μ‘νλκ² μλλΌ λ°μ΄ν°μ μΌμ λΆλΆλ§ λ²μλ‘ μ§μ ν΄μ requestν μ μμ΅λλ€.
Content-Encoding(μμΆ μ μ‘)
λ³΄λΌ message bodyλ₯Ό μμΆν΄μ 보λ΄λ λ°©μμ λλ€.
βοΈνλΌλ―Έν°λ‘ Content-Encodingμ΄ λ€μ΄κ°λλ€.
ex) Content-Encoding : gzip
ν΄λΌμ΄μΈνΈλ response messageμ Content-Encodingμ λ³΄κ³ μ΄λ€ λ°©μμΌλ‘ μμΆμ ν΄μ ν΄μΌ ν μ§ μ μ μμ΅λλ€.
HTTP - μ λ³΄μ± ν€λ (μΌλ°)
From : μ μ μμ΄μ νΈμ μ΄λ©μΌ μ 보
- μΌλ°μ μΌλ‘ μ μ¬μ© X
- κ²μ μμ§ κ°μ κ³³μμ, μ£Όλ‘ μ¬μ©
Referer : μ΄μ μΉ νμ΄μ§ μ£Όμ
- νμ¬ μμ²λ νμ΄μ§μ μ΄μ μΉ νμ΄μ§ μ£Όμ
- A->Bλ‘ μ΄λνλ κ²½μ° Bλ₯Ό μμ²ν λ Referer: Aλ₯Ό ν¬ν¨ν΄μ μμ²
- requestμμ μ¬μ©
Refererμ μ¬μ©ν΄μ μ μ κ²½λ‘ λΆμ κ°λ₯
User-Agent : μ μ μμ΄μ νΈ μ ν리μΌμ΄μ μ 보
- user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/ 537.36 (KHTML, like Gecko) Chrome/86.0.4240.183 Safari/537.36
- ν΄λΌμ΄μΈνΈμ μ ν리μΌμ΄μ μ 보(μΉ λΈλΌμ°μ μ 보 λ±λ±)
- requestμμ μ¬μ©
- μ΄λ€ μ’ λ₯μ λΈλΌμ°μ μμ μ₯μ κ° λ°μνλμ§ νμ ν μ μμ΅λλ€.
Server : μμ²μ μ²λ¦¬νλ ORIGIN μλ²μ μννΈμ¨μ΄ μ 보
- Server: Apache/2.2.22 (Debian)
- server: nginx
- response(μλ΅)μμ μ¬μ©
Date : λ©μμ§κ° λ°μν λ μ§/μκ°
- Date: Tue, 15 Nov 1994 08:12:31 GMT
- μλ΅μμ μ¬μ©
HTTP - μ λ³΄μ± ν€λ(νΉμ)
Host : μμ²ν νΈμ€νΈ μ 보(λλ©μΈ)
νλμ μλ²κ° μ¬λ¬ λλ©μΈμ μ²λ¦¬ν λμ μ¬μ©ν©λλ€.
λ§μ½ μλ² νλκ° μ¬λ¬κ°μ§μ λλ©μΈμ κ΄λ¦¬ν λ, ν΄λΌμ΄μΈνΈκ° μλ²μ μ°κ²° μμ²μ νλ©΄ μλ²λ ν΄λΌμ΄μΈνΈμκ² λ¬΄μ¨ λλ©μΈμ μ°κ²°ν΄μ£Όμ΄μΌ ν μ§ μ μ μμ΅λλ€.
ν΄λΌμ΄μΈνΈκ° Hostμ μνλ λλ©μΈμ λ΄μμ 보λ΄λ©΄ μ΄ λ¬Έμ λ₯Ό ν΄κ²°ν μ μμ΅λλ€.
Location: νμ΄μ§ 리λ€μ΄λ μ
μΉ λΈλΌμ°μ λ 3xxμλ΅μ κ²°κ³Όμ Location ν€λκ° μμΌλ©΄, Location μμΉλ‘ μλ 리λ€μ΄λ νΈ
Location κ°μ 리λ€μ΄λ μ νκΈ° μν λμ 리μμ€λ₯Ό κ°λ¦¬ν΅λλ€.
Allow: νμ© κ°λ₯ν HTTP λ©μλ
405 (Method Not Allowed) μμ responseμ ν¬ν¨ν΄μΌ ν©λλ€.
μνμ½λ 405λ λ©μλ 맀μΉμ΄ λμ§ μμ μκΈ°λ μ€λ₯μ λλ€.
ex) μλ²λ GET,HEAD,PUTλ§ μ§μν λ, ν΄λΌμ΄μΈνΈκ° POSTλ₯Ό μμ²νμ λμ
request λ©μμ§μ ν€λμ Allow : GET, HEAD, PUT
Retry-After: μ μ μμ΄μ νΈκ° λ€μ μμ²μ νκΈ°κΉμ§ κΈ°λ€λ €μΌ νλ μκ°
503(Service Unavailable) μνμ½λμμ μλΉμ€κ° μΈμ κΉμ§ μ¬μ© λΆκ°λ₯μΈμ§ μλ €μ£ΌκΈ° μν request message header
ex) Retry-After: Fri, 31 Dec 1999 23:59:59 GMT (λ μ§ νκΈ°)
HTTP - μΈμ¦μ± ν€λ
Autorization
ν΄λΌμ΄μΈνΈ μΈμ¦ μ 보λ₯Ό λ΄μ μλ²μ μ λ¬ / μ£Όλ‘ μμ² λ©μμ§μ μ¬μ©λ¨
WWW-Authenticate
401 Unauthorized μλ΅ λ©μμ§μ ν¨κ» μ¬μ©λκ³ , 리μμ€ μ κ·Ό μ νμν μΈμ¦ λ°©λ² μ μ
ex) WWW-Authenticate : Newauth realm="apps", type=1, β¨title="Login to \"apps\"", Basic realm="simple"
HTTP - μΏ ν€ ν€λ
HTTPλ stateless νλ‘ν μ½μ΄κΈ° λλ¬Έμ ν΄λΌμ΄μΈνΈμ μλ²κ° μμ²κ³Ό μλ΅μ μ£Όκ³ λ°μΌλ©΄ μ°κ²°μ΄ λμ΄μ§λλ€.
ν΄λΌμ΄μΈνΈκ° λ€μ μμ²νλ©΄ μλ²λ μ΄μ μμ²μ κΈ°μ΅νμ§ λͺ»νκΈ° λλ¬Έμ, λͺ¨λ μμ²μ μ¬μ©μ μ 보λ₯Ό ν¬ν¨ν΄μΌ ν©λλ€.
μΏ ν€λ₯Ό μ¬μ©νμ§ μλλ€λ©΄ λͺ¨λ μμ²κ³Ό λ§ν¬μ μ¬μ©μ μ 보λ₯Ό ν¬ν¨ν΄μΌ νκ² μ£ ?
μ΄ λ λΈλΌμ°μ λ₯Ό μμ ν μ’ λ£νκ³ λ€μ μ΄λ©΄ μ΄κΈ°ν λλ€λ λ¬Έμ κ° λ°μν©λλ€. μΏ ν€λ₯Ό μ¬μ©νλ©΄ μ΄ λ¬Έμ λ₯Ό ν΄κ²°ν μ μμ΅λλ€.
1. ν΄λΌμ΄μΈνΈκ° POSTλ₯Ό ν΅ν΄ login request
2. μλ²μμ Set-cookieλ₯Ό ν΅ν΄ ν΄λΌμ΄μΈνΈλ‘ μΏ ν€λ₯Ό μ λ¬
3. λ‘κ·ΈμΈ μ΄ν welcome νμ΄μ§ μ κ·Όν λ, μΏ ν€μ μ₯μμμ μ‘°νν΄μ μ μ μ 보λ₯Ό μ¬μ©
Set-Cookie : μλ²μμ ν΄λΌμ΄μΈνΈλ‘ μΏ ν€ μ λ¬(μλ΅)
Set-Cookie: <cookie-name>=<cookie-value>; Domain=<domain-value>; Secure; HttpOnly
νλΌλ―Έν°
1. expiresλ max-ageλ₯Ό ν΅ν΄ μΏ ν€ μλͺ μ£ΌκΈ° μ€μ κ°λ₯.
2. domain
> λͺ μν λ¬Έμ κΈ°μ€ λλ©μΈ + μλΈ λλ©μΈ ν¬ν¨
ex) domain=example.org λ₯Ό μ§μ ν΄μ μΏ ν€ μμ± μ
example.org λ¬Όλ‘ μ΄κ³ , dev.example.orgλ μΏ ν€ μ κ·Ό.
ex) μλ΅ μ νμ¬ λ¬Έμ κΈ°μ€ λλ©μΈλ§ μ μ©λ©λλ€.
example.orgμμ μΏ ν€λ₯Ό μμ±νκ³ domain μ§μ μλ΅ μ dev.example.orgλ μΏ ν€μ μ κ·Όν μ μμ΅λλ€.
3. path
> μ΄ κ²½λ‘λ₯Ό ν¬ν¨ν νμ κ²½λ‘ νμ΄μ§λ§ μΏ ν€ μ κ·Ό
4. Secure, HttpOnly, SameSite
> Secureλ₯Ό μ μ©νλ©΄ httpsμΈ κ²½μ°μλ§ μΏ ν€ μ λ¬
> HttpOnlyλ HTTP μ μ‘μλ§ μΏ ν€ μ λ¬ / xss 곡격 λ°©μ§
> SameSiteλ μμ² λλ©μΈκ³Ό μΏ ν€μ μ€μ λ λλ©μΈμ΄ κ°μ κ²½μ°λ§ μΏ ν€ μ λ¬
Cookie : ν΄λΌμ΄μΈνΈκ° μλ²μμ λ°μ μΏ ν€λ₯Ό μ μ₯νκ³ , HTTP μμ² μ μλ²λ‘ μ λ¬.
- μΏ ν€ μ 보λ νμ μλ²μ μ μ‘λκΈ° λλ¬Έμ λ€νΈμν¬μ μΆκ° νΈλν½μ μ λ°ν©λλ€.
- λ°λΌμ μ΅μνμ μ 보(μΈμ id, μΈμ¦ ν ν°)λ§ μ¬μ©νλ κ²μ΄ μ’μ΅λλ€.
- μλ²μ μ μ‘νμ§ μκ³ , μΉ λΈλΌμ°μ λ΄λΆμ λ°μ΄ν°λ₯Ό μ μ₯νκ³ μΆμΌλ©΄ μΉ μ€ν λ¦¬μ§ (localStorage, sessionStorage) μ°Έκ³ .
- 보μμ λ―Όκ°ν λ°μ΄ν°λ μ μ₯νλ©΄ μλ¨.
'π CS > HTTP' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
HTTP νν ν€λ - μΊμ (1) | 2023.02.17 |
---|---|
HTTP μνμ½λ / 1~5XX (0) | 2023.02.16 |
HTTP λ©μλ νμ© (0) | 2023.02.15 |
HTTP λ©μλ - GET, POST, PUT, PATCH, DELETE in Start line (0) | 2023.02.15 |
HTTP ( HyperText Transfer Protocol) (0) | 2023.02.15 |
λΈλ‘κ·Έμ μ 보
Study Repository
rlaehddnd0422