π‘ ν루μλ λͺ λ²μ©μ΄λ, νμμ λ€μ HTTP μ 리νμ !
λ Έμ μμ 보기
π HTTP
HTTP λ?
- HTTP(Hyper Text Transfer Protocol) λ, μλ² - ν΄λΌμ΄μΈνΈ λͺ¨λΈμ λ°λΌ λ°μ΄ν°λ₯Ό μ£Όκ³ λ°κΈ° μν νλ‘ν μ½
- μ¦, HTTP λ μΈν°λ·μμ νμ΄νΌν μ€νΈλ₯Ό κ΅ννκΈ° μν ν΅μ κ·μ½
- 80λ² ν¬νΈ μ¬μ©
- HTTP μλ²κ° 80 λ² ν¬νΈμμ μμ²μ κΈ°λ€λ¦¬κ³ , ν΄λΌμ΄μΈνΈλ 80λ² ν¬νΈλ‘ μμ²μ 보λΈλ€.
HTTP νΉμ§
λΉμν μ°κ²°(Stateless, Connectless)
- μλ²μ μ°κ²°ν΄ μμ²νκ³ → μλ΅μ λ°μΌλ©΄ : μ°κ²°μ λμ΄λ²λ¦°λ€.
- μ₯μ
- μ μ μ μ§ μ΅μν
- λΆνΉμ λ€μλ₯Ό λμμΌλ‘ νλ μλΉμ€μ μ 리
- λ¨μ
- μ°κ²°μ λμ΄λ²λ¦¬κΈ° λλ¬Έμ, ν΄λΌμ΄μΈνΈμ μ΄μ μνλ₯Ό μ μ μγ ,γ
- μ΄λ₯Ό ν΄κ²°νκΈ° μν΄ μΏ ν€, μΈμ λ±μ μ¬μ©νλ κ²!!!!!!!!!!!!!!
Keep Alive
- HTTP 1.1 λΆν°λ keep-alive κΈ°λ₯μ μ§μ
- HTTP λ νλμ μ°κ²°μ - νλμ μμ²μ νλ κ²μ κΈ°μ€μΌλ‘ μ€κ³κ° λμ΄μμ
- λ§μ½, λ¬Έμμ λ€μμ νμΌμ΄ μλ€λ©΄?
- κ³μ μ°κ²°νκ³ → λ€μ΄νκ³ → μ°κ²°μ λμ΄μΌ ν¨
- μ΄λ¬ν λ°©μμ TCP ν΅μ κ³Όμ μμ λΉμ©μ΄ λ§μ΄ μλͺ¨λ¨!
- Keep Alive κΈ°λ₯μ, μ§μ λ μκ°λμ μ°κ²°μ λμ§ μκ³ μμ²μ κ³μν΄μ λ³΄λΌ μ μλ€.
HTTP Request ꡬ쑰
Start Line
- HTTP λ©μλ
- μμ²μ μλμ λ°λΌ GET/POST/PUT/DELETE
- GET : μ‘°ν - μ‘΄μ¬νλ μμμ λν μμ²
- POST : λ±λ‘ - μλ‘μ΄ μμμ μμ±
- PUT : μμ - μ‘΄μ¬νλ μμμ λν λ³κ²½
- PUT : 리μμ€μ λͺ¨λ κ²μ μ λ°μ΄νΈ νλ€.
- → 보λ΄μ§μ§ μμ μ 보μ λν΄μλ nullκ°μΌλ‘ μ λ°μ΄νΈ
- PATCH : 리μμ€μ μΌλΆλ₯Ό μ λ°μ΄νΈ νλ€.
- → 보λ΄μ§μ§ μμ μ 보μ λν΄μλ κΈ°μ‘΄ λ°μ΄ν°λ₯Ό μ μ§
- DELETE : μμ - μ‘΄μ¬νλ μμμ λν μμ
- μμ²μ μλμ λ°λΌ GET/POST/PUT/DELETE
- Request Target Path(μμ² URL)
- Request Target Path λ HTTP Request κ° μ μ‘λλ λͺ©ν μ£Όμ
- HTTP Version
- version μ λ°λΌ Request λ©μμ§ κ΅¬μ‘°λ λ°μ΄ν°κ° λ€λ₯Ό μ μμ
Header
- HTTP Request κ·Έ μ체μ λν μ 보λ₯Ό λ΄κ³ μμ
- Key : Value ννλ‘ μ΄λ£¨μ΄μ§
- Request μ Response μλ§ μλ Header μΈμ κ³΅ν΅ Header λ μ‘΄μ¬
- Host : μμ²νλ €λ μλ² νΈμ€νΈ μ΄λ¦κ³Ό ν¬νΈ λ²νΈ
- User-agent : ν΄λΌμ΄μΈνΈ νλ‘κ·Έλ¨ μ 보
- μ΄ μ 보λ₯Ό ν΅ν΄ μλ²λ, ν΄λΌμ΄μΈνΈ νλ‘κ·Έλ¨(λΈλΌμ°μ )μ λ§λ μ΅μ μ λ°μ΄ν°λ₯Ό λ³΄λΌ μ μμ
- Referer : λ°λ‘ μ§μ μ λ¨Έλ¬Όλ λ μΉ λ§ν¬ μ£Όμ
- Accept : ν΄λΌμ΄μΈνΈκ° μ²λ¦¬ κ°λ₯ν λ―Έλμ΄ νμ μ’ λ₯ λμ΄
- If-Modified-Since : μ¬κΈ°μ μ°μ¬μ§ μκ° μ΄νλ‘ λ³κ²½λ 리μμ€ μ·¨λ
- νμ΄μ§κ° μμ λ κ²½μ°, μ΅μ νμ΄μ§λ‘ κ΅μ²΄
- Authorization : μΈμ¦ ν ν°μ μλ²λ‘ λ³΄λΌ λ μ¬μ©
- Origin : μλ²λ‘ POST μμ²μ λ³΄λΌ λ μμ²μ΄ μ΄λ μ£Όμμμ μμλμλμ§λ₯Ό λνλ΄λ κ°
- μ΄ κ°μΌλ‘ μμ²μ λ³΄λΈ μ£Όμμ λ°λ μ£Όμκ° λ€λ₯Έ κ²½μ°, CORS(Cross-Origin Resource Sharing) μλ¬ λ°μ
- **Cookie** : μΏ ν€
Accept: */*
Accept-Encoding: gzip, deflate
Connection: keep-alive
Content-Type: application/json
Content-Length: 257
Host: google.com
User-Agent: HTTPie/0.9.3
Body
- HTTP Reuest κ° μ μ‘νλ λ°μ΄ν°λ₯Ό λ΄κ³ μλ λΆλΆ
- μ μ‘νλ λ°μ΄ν°κ° μλ κ²½μ° Body λ λΉμ΄μμ
- λ³΄ν΅ POST μμ²μΌ κ²½μ°, HTML νΌ λ°μ΄ν°κ° ν¬ν¨
HTTP Response ꡬ쑰
Start Line
- HTTP Version
- Status Code
- Response μ μνλ₯Ό λνλ΄λ μ½λ
- 200 : μμ² μ μ μ²λ¦¬
- 404 : μλͺ»λ μμ²
- Status Text
- Response μ μνλ₯Ό κ°λ΅νκ² κΈλ‘ νν
HTTP/1.1 404 Not Found
Header
- Location : μν μ½λκ° 301, 302 μΌ λλ§ λ³Ό μ μλ Heder
- μλ²μ μλ΅μ΄ λ€λ₯Έ κ³³μ μλ€κ³ μλ €μ£Όλ©΄μ → ν΄λΉ μμΉ URI μ μ₯
- URI μ URL (URI > URL, URN)
- URI(Uniform resource Identifier) : λ€νΈμν¬ μμμ μμμ μμΉλ₯Ό μλ €μ£ΌκΈ° μν κ·μ½
- URL(Uniform Resource Locator) : ν΅ν© μμ μλ³μ → μΈν°λ·μ μλ μμμ λνλ΄λ μ μΌν μ£Όμ
- URI μ URL ꡬλΆ
- https://example.com μ κ²½μ° https://example.com μ΄λΌλ μλ²λ₯Ό λνλ΄κΈ° λλ¬Έμ URLμ΄λ©΄μ URI
- https://example.com/skin μ κ²½μ° example μλ²μ skinμ΄λΌλ μΈν°λ·μμ μμμ μμΉλ₯Ό μλ―ΈνκΈ°μ URL μ΄λ©΄μ URI
- https://example.com/123 μ κ²½μ°
- URL : https://example.com κΉμ§
- μνλ μ 보μ λλ¬νκΈ° μν΄μλ 123μ΄λΌλ μλ³μκ° νμ
- UIRI μ΄μ§λ§ URL μ μλ
- Server : μΉ μλ²μ μ’ λ₯
- **Age** : max-age(μ ν¨μκ°, μ΄λ¨μ) μκ° λ΄μμ μΌλ§λ νλ λμ§λ₯Ό μ΄ λ¨μλ‘ μλ €μ£Όλ κ°
- Referrer-policy : μλ² referrer μ μ±
μ μλ €μ£Όλ κ°
- origin, no-referrer, unsafe-url
- WWW-Authenticate : μ¬μ©μ μΈμ¦μ΄ νμν μμμ μꡬν κ²½μ°, μλ²κ° μ 곡νλ μΈμ¦ λ°©μ
- Proxy-Authenticate : μμ²ν μλ²κ° νλ‘μ μλ²μΈ κ²½μ° μ μ μΈμ¦μ μν κ°
Body
- μ μ‘λ°λ λ°μ΄ν° → μλ κ²½μ° λΉμ΄μμ
- HTML, JSON, Octet Stream
HTTP/1.1 404 Not Found
Connection: close
Content-Length: 1573
Content-Type: text/html; charset=UTF-8
Date: Mon, 20 Aug 2018 07:59:05 GMT
<!DOCTYPE html>
<html lang=en>
<meta charset=utf-8>
<meta name=viewport content="initial-scale=1, minimum-scale=1, width=device-width">
<title>Error 404 (Not Found)!!1</title>
<style>
*{margin:0;padding:0}html,code{font:15px/22px arial,sans-serif}html{background:#fff;color:#222;padding:15px}body{margin:7% auto 0;max-width:390px;min-height:180px;padding:30px 0 15px}* > body{background:url(//www.google.com/images/errors/robot.png) 100% 5px no-repeat;padding-right:205px}p{margin:11px 0 22px;overflow:hidden}ins{color:#777;text-decoration:none}a img{border:0}@media screen and (max-width:772px){body{background:none;margin-top:0;max-width:none;padding-right:0}}#logo{background:url(//www.google.com/images/branding/googlelogo/1x/googlelogo_color_150x54dp.png) no-repeat;margin-left:-5px}@media only screen and (min-resolution:192dpi){#logo{background:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) no-repeat 0% 0%/100% 100%;-moz-border-image:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) 0}}@media only screen and (-webkit-min-device-pixel-ratio:2){#logo{background:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) no-repeat;-webkit-background-size:100% 100%}}#logo{display:inline-block;height:54px;width:150px}
</style>
<a href=//www.google.com/><span id=logo aria-label=Google></span></a>
<p><b>404.</b> <ins>That’s an error.</ins>
<p>The requested URL <code>/payment-sync</code> was not found on this server. <ins>That’s all we know.</ins>
HTTP Request / Response κ³΅ν΅ Header
- Date : νμ¬ μκ°
- Cache-Control : μΊμ μ μ΄
- Transfer-Encoding : Body λ΄μ© μ체 μμΆ λ°©μ μ§μ
- Content-Encoding : Body μ 리μμ€ μμΆ λ°©μ
- Cotent-type : Body μ λ―Έλμ΄ νμ
- Ex) application/json, text/html
- Content-Length : Body μ κΈΈμ΄
- Content-language : Body λ₯Ό μ΄ν΄νλλ° κ°μ₯ μ μ ν μΈμ΄
- Ex) ko
- Connection : ν΄λΌμ΄μΈνΈμ μλ²μ μ°κ²° λ°©μ μ€μ
- HTTP/1.1 μ keep-alive λ‘ μ°κ²°μ μ μ§νλ κ²μ΄ λν΄νΈ
Request Header μ Content-type κ³Ό Body
- form νν : URL Emcoded λ°©μ
- application/x-www-form-urlencoded
- λ©μμ§ λ°λ : 쿼리 λ¬Έμμ΄
- json νν
- application/json
- **multipart νν** : μ΄μ§ νμΌμ λκΈΈ λ, νλμ λ©μμ§ λ°λμ ννΈλ₯Ό λλμ΄ μμ±
- boundary λ ννΈ κ΅¬λΆμ
- multipart/form-data : boundary=frontier
Response Header μ Content-type κ³Ό Body
- text/plain, text/html
- application/xml, applicaion/json
- image/png, image/jpg
- audio/mp3, video/mp4
Satatus Code
- 1xx : μ 보
- 2xx : μ±κ³΅
- 200 : OK. μμ² μ±κ³΅
- 201 : Created. μμ± μμ² μ±κ³΅
- 202 : Accepted. μμ² μλ½(μ²λ¦¬ 보μ₯ X)
- 204 : μ±κ³΅νμΌλ λλ €μ€ κ²μ΄ μμ
- 3xx : 리λ€μ΄λ μ
- 300 : Multiple choices. μ¬λ¬ 리μμ€μ λν μμ² κ²°κ³Ό λͺ©λ‘
- 301, 302, 303 : Redirect. 리μμ€ μμΉκ° λ³κ²½λ μν
- 304 : Not modified. 리μμ€κ° μμ λμ§ μμ
- 4xx : ν΄λΌμ΄μΈνΈ μ€λ₯
- 400 : Bad Request. μμ² μ€λ₯(λ¬Έλ²μ μ€λ₯, μλͺ» μ λ ₯ν url)
- 401 : Unauthorized. κΆν μμ
- 403 : Forbidden. μμ² κ±°λΆ
- 404 : Not Found. 리μμ€κ° μλ μν(μμ²ν νμ΄μ§λ₯Ό μ°Ύμ μ μλ κ²½μ°)
- 5xx : μλ² μ€λ₯
- 500 : Internal Server Error. μλ²κ° μμ²μ μ²λ¦¬νμ§ λͺ»ν¨
- 501 : Not Implemented. μλ²κ° μ§μνμ§ μλ μμ²
- 503 : Service Unavailable. κ³ΌλΆν λ±μΌλ‘ λΉμ₯ μλΉμ€κ° λΆκ°λ₯ν μν
HTTP μ λ¬Έμ μ
- μλ²μμ → λΈλΌμ°μ λ‘ μ μ‘λλ μ λ³΄κ° μνΈνλμ§ μλλ€λ κ²!
- μ¦, λ°μ΄ν°κ° μ½κ² λλλΉν μ μλ€λ κ²μ΄λ€.
- μ΄λ₯Ό HTTPS λ SSL(보μ μμΌ κ³μΈ΅) μ μ¬μ©ν΄ ν΄κ²°νλ€.
μ°Έκ³ μλ£
'CS' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Network] www.google.com μ μ λ ₯ μ λ¬΄μ¨ μΌμ΄ λ°μν κΉ? (0) | 2022.07.10 |
---|---|
[Network] HTTPμ HTTPS μ μ°¨μ΄λ ? (0) | 2022.07.10 |
[Network] TCP μ UDP μ μ°¨μ΄ ? (0) | 2022.07.09 |
[Network] TCP/IP λ ? (0) | 2022.07.09 |
[DB] λ°μ΄ν°λ² μ΄μ€ μΈλ±μ€(Index) (0) | 2022.07.09 |