HTTPλž€?

HTML λ¬Έμ„œμ™€ 같은 λ¦¬μ†ŒμŠ€λ“€μ„ κ°€μ Έμ˜¬ 수 μžˆλ„λ‘ ν•΄μ£ΌλŠ” ν”„λ‘œν† μ½œ. μ›Ήμ—μ„œ μ΄λ£¨μ–΄μ§€λŠ” λͺ¨λ“  데이터 κ΅ν™˜μ˜ 기초이며 ν΄λΌμ΄μ–ΈνŠΈ-μ„œλ²„ ν”„λ‘œν† μ½œμ΄λ‹€.

ν΄λΌμ΄μ–ΈνŠΈ-μ„œλ²„ ν”„λ‘œν† μ½œ: μˆ˜μ‹ μž 츑에 μ˜ν•΄ μš”μ²­μ΄ μ΄ˆκΈ°ν™”λ˜λŠ” ν”„λ‘œν† μ½œ

ν•˜λ‚˜μ˜ μ™„μ „ν•œ λ¬Έμ„œλŠ” 이것저것 Fetchν•œ ν•˜μœ„ λ¬Έμ„œλ“€λ‘œ μž¬κ΅¬μ„±λœλ‹€.

클라와 μ„œλ²„λŠ” κ°œλ³„μ μΈ λ©”μ„Έμ§€ κ΅ν™˜μ— μ˜ν•΄ ν†΅μ‹ ν•œλ‹€. 보톡 λΈŒλΌμš°μ €μΈ ν΄λΌμ΄μ–ΈνŠΈμ— μ˜ν•΄ μ „μ†‘λ˜λŠ” λ©”μ„Έμ§€λ₯Ό **μš”μ²­(request)** 이라 ν•˜κ³  μ„œλ²„μ—μ„œ λ°›λŠ” λ©”μ„Έμ§€λ₯Ό **응닡(response)** 이라고 ν•œλ‹€. HTTPλŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜ κ³„μΈ΅μ˜ ν”„λ‘œν† μ½œλ‘œ, μ‹ λ’° κ°€λŠ₯ν•œ 전솑 ν”„λ‘œν† μ½œμ΄λ©΄ 이둠상 무엇이든 μ‚¬μš©ν•  수 μžˆλ‹€. TCP ν˜Ήμ€ μ•”ν˜Έν™”λœ TCP 연결인 TLSλ₯Ό 톡해 μ „μ†‘λœλ‹€.

TCP(Transport Control Protocol) 전솑 μ œμ–΄ ν”„λ‘œν† μ½œ, 두 개의 호슀트λ₯Ό μ—°κ²°ν•˜κ³  데이터 μŠ€νŠΈλ¦Όμ„ κ΅ν™˜ν•˜κ²Œ ν•΄μ£ΌλŠ” μ€‘μš” λ„€νŠΈμ›Œν¬ ν”„λ‘œν† μ½œ

TLS(Transport Layer Security) 전솑 계측 λ³΄μ•ˆ, μ• ν”Œλ¦¬μΌ€μ΄μ…˜λ“€μ΄ λ„€νŠΈμ›Œν¬ μƒμ—μ„œ μ•ˆμ „ν•˜κ²Œ ν†΅μ‹ ν•˜κΈ° μœ„ν•΄ μ‚¬μš©λœ ν”„λ‘œν† μ½œ. 이메일, μ›Ή λΈŒλΌμš°μ§•, λ©”μ‹œμ§•, λ‹€λ₯Έ ν”„λ‘œν† μ½œλ“€μ˜ 감청을 ν†΅ν•œ μ •λ³΄μ˜ λ³€ν˜•μ„ λ°©μ§€ν•œλ‹€. SSL(Secure Sockets Layer)μœΌλ‘œλ„ μ•Œλ €μ Έ 있음. μ΅œμ‹  λΈŒλΌμš°μ €λ“€μ€ μœ νš¨ν•œ λ””μ§€ν„Έ μΈμ¦μ„œλ₯Ό μ œκ³΅ν•˜λ„λ‘ μš”κ΅¬ν•˜λŠ” TLS ν”„λ‘œν† μ½œμ„ μ§€μ›ν•˜κ³  μžˆλ‹€.

이λ₯Ό 톡해 μ˜€λŠ˜λ‚  μš°λ¦¬κ°€ μ΄λŸ°μ €λŸ° μΈν„°λ„·μ—μ„œ μ—¬λŸ¬ 정보λ₯Ό κ΅ν™˜ν•  수 μžˆλŠ” 것이닀.

HTTP 기반 μ‹œμŠ€ν…œμ˜ ꡬ성 μš”μ†Œ

HTTPλŠ” ν΄λΌμ΄μ–ΈνŠΈ-μ„œλ²„ ν”„λ‘œν† μ½œλ‘œ μš”μ²­μ€ ν•˜λ‚˜μ˜ 개체, μ‚¬μš©μž μ—μ΄μ „νŠΈμ— μ˜ν•΄ μ „μ†‘λœλ‹€. μ‚¬μš©μž μ—μ΄μ „νŠΈλŠ” λΈŒλΌμš°μ €μ§€λ§Œ λ‘œλ΄‡μ΄λ“  무엇이든 될 수 μžˆλ‹€.  각각의 μš”μ²­μ€ μ„œλ²„λ‘œ 보내지고 responseλ₯Ό λ°›λŠ” κ³Όμ •μ—μ„œ κ²Œμ΄νŠΈμ›¨μ΄ λ˜λŠ” μΊμ‹œ 역할을 ν•˜λŠ” ν”„λ‘μ‹œκ°€ 쀑간에 걸쳐 μžˆλ‹€.

μ‹€μ œλ‘œ λΈŒλΌμš°μ €μ™€ μ„œλ²„ μ‚¬μ΄μ—λŠ” μΈν„°λ„·μ—μ„œ μ„€λͺ…ν–ˆλ“― λͺ¨λŽ€μ΄λ‚˜ λΌμš°ν„°μ™€ 같은 컴퓨터듀이 μ‘΄μž¬ν•˜μ§€λ§Œ μ›Ήμ˜ 계측적인 μ„€κ³„λ‘œ λ„€νŠΈμ›Œν¬μ™€ 전솑 계측 λ‚΄λ‘œ μˆ¨κ²¨μ§„λ‹€. μ—¬κΈ°μ„œ HTTPλŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜ κ³„μΈ΅μ˜ μ΅œμƒμœ„μ— μžˆλ‹€.

HTTP의 기초적인 츑면

κ°„λ‹¨ν•˜λ‹€

μ‚¬λžŒμ΄ 읽을 수 있고 κ°„λ‹¨ν•˜μ—¬ μ‚¬λžŒμ΄ 읽고 이해가 κ°€λŠ₯ν•˜λ‹€.

ν™•μž₯ κ°€λŠ₯ν•˜λ‹€

HTTPν—€λ”λŠ” HTTPλ₯Ό ν™•μž₯ν•˜κ³  μ‹€ν—˜ν•˜κΈ° μ‰½κ²Œ λ§Œλ“€μ–΄μ£Όμ–΄ κ³„μ†ν•΄μ„œ κ°€λŠ₯ μΆ”κ°€κ°€ κ°€λŠ₯ν•˜λ‹€.

μƒνƒœκ°€ μ—†μ§€λ§Œ μ„Έμ…˜μ΄ μžˆλ‹€

μƒνƒœλ₯Ό μ €μž₯ν•˜μ§€ μ•Šμ§€λ§Œ HTTP μΏ ν‚€λ₯Ό 톡해 μƒνƒœκ°€ μžˆλŠ” μ„Έμ…˜μ„ λ§Œλ“€λ„λ‘ ν•΄μ€€λ‹€. 헀더 ν™•μž₯성을 μ‚¬μš©ν•˜μ—¬ λ™μΌν•œ μ»¨ν…μŠ€νŠΈ λ˜λŠ” λ™μΌν•œ μƒνƒœλ₯Ό κ³΅μœ ν•˜κΈ° μœ„ν•΄ 각각의 μš”μ²­λ“€μ— μ„Έμ…˜μ„ λ§Œλ“€λ„λ‘ HTTP μΏ ν‚€κ°€ μΆ”κ°€λœλ‹€.

HTTP μΏ ν‚€ μ„œλ²„κ°€ μ‚¬μš©μžμ˜ μ›Ή λΈŒλΌμš°μ €μ— μ „μ†‘ν•˜λŠ” μž‘μ€ 데이터 쑰각. λΈŒλΌμš°μ €λŠ” μΏ ν‚€λ₯Ό μ €μž₯ν•΄ λ†“μ•˜λ‹€κ°€ λ™μΌν•œ μ„œλ²„μ— μž¬μš”μ²­μ‹œ μ €μž₯된 데이터λ₯Ό ν•¨κ»˜ μ „μ†‘ν•œλ‹€. 두 μš”μ²­μ΄ λ™μΌν•œ λΈŒλΌμš°μ €μ—μ„œ λ“€μ–΄μ™”λŠ”μ§€ μ•„λ‹Œμ§€λ₯Ό νŒλ‹¨ν•  λ•Œ 주둜 μ‚¬μš©ν•œλ‹€ μ‚¬μš©μžμ˜ 둜그인 μƒνƒœ μœ μ§€μ—μ„œ μ‚¬μš©λ˜λŠ” 편

μ—°κ²°

연결은 전솑 κ³„μΈ΅μ΄λ―€λ‘œ HTTP μ˜μ—­μ˜ 밖이닀. 근본적인 전솑 ν”„λ‘œν† μ½œμ„ μš”κ΅¬ν•˜μ§€ μ•Šμ§€λ§Œ μ‹ λ’°ν•  수 μžˆκ±°λ‚˜ λ©”μ„Έμ§€ 손싀이 μ—†λŠ” 연결을 μš”κ΅¬ν•œλ‹€. 즉 연결이 ν•„μˆ˜λŠ” μ•„λ‹ˆμ§€λ§Œ μ—°κ²° 기반인 TCP ν‘œμ€€μ— μ˜μ‘΄ν•œλ‹€.

HTTP둜 ν΄λΌμ΄μ–ΈνŠΈ/μ„œλ²„κ°€ μš”μ²­/μ‘λ‹΅μœΌλ‘œ κ΅ν™˜ν•˜κΈ° μ „ TCP μ—°κ²° 섀정이 ν•„μš”ν•˜λ‹€. HTTP/1.0은 각 μš”μ²­/응닡에 λŒ€ν•΄ 별도 TCP 연결을 μ—΄μ–΄μ•Ό ν–ˆμ§€λ§Œ 이 경우 연속적인 μš”μ²­μ΄ μžˆμ„ 경우 λΉ„νš¨μœ¨μ μ΄κ²Œ λœλ‹€.

이에 HTTP/1.1은 νŒŒμ΄ν”„λΌμ΄λ‹ κ°œλ…κ³Ό 지속적인 μ—°κ²°μ˜ κ°œλ…μ„ λ„μž…ν•˜μ—¬ Connection 헀더λ₯Ό μ‚¬μš©ν•΄ λΆ€λΆ„μ μœΌλ‘œ μ œμ–΄ν•  수 μžˆλ‹€.

HTTP/2λŠ” 연결을 μ§€μ†λ˜κ³  효율적으둜 μœ μ§€ν•˜λŠ”λ° 도움이 λ˜λ„λ‘ 단일 μ—°κ²° μƒμ—μ„œ λ©”μ„Έμ§€λ₯Ό 닀쀑전솑할 수 μžˆλ„λ‘ λ°œμ „ν–ˆλ‹€.

ν˜„μž¬λŠ” 더 λ‚˜μ€ 전솑 ν”„λ‘œν† μ½œμ„ μ„€κ³„ν•˜λŠ” 쀑이닀.

HTTP둜 μ œμ–΄ν•  수 μžˆλŠ” 것

μΊμ‹œ

λ¬Έμ„œκ°€ μΊμ‹œλ˜λŠ” 방식을 μ œμ–΄ν•  수 μžˆλ‹€. μ„œλ²„λŠ” μΊμ‹œ λŒ€μƒκ³Ό 기간을 ν”„λ‘μ‹œμ™€ ν΄λΌμ΄μ–ΈνŠΈμ— μ§€μ‹œν•  수 있고 ν΄λΌμ΄μ–ΈνŠΈλŠ” μ €μž₯된 λ¬Έμ„œλ₯Ό λ¬΄μ‹œν•˜λΌκ³  쀑간 μΊμ‹œ ν”„λ‘μ‹œμ—κ²Œ μ§€μ‹œν•  수 μžˆλ‹€.

Origin μ œμ•½μ‚¬ν•­ μ™„ν™”

μŠ€λˆ„ν•‘κ³Ό λ‹€λ₯Έ ν”„λΌμ΄λ²„μ‹œ μΉ¨ν•΄λ₯Ό 막기 μœ„ν•΄, λΈŒλΌμš°μ €λŠ” μ›Ή μ‚¬μ΄νŠΈ κ°„μ˜ μ—„κ²©ν•œ 뢄리λ₯Ό κ°•μ œν•œλ‹€. λ™μΌν•œ originμœΌλ‘œλΆ€ν„° 온 νŽ˜μ΄μ§€λ§Œμ΄ μ›Ή νŽ˜μ΄μ§€μ˜ 전체 정보에 μ ‘κ·Όν•  수 μžˆλ‹€. 그런 μ œμ•½ 사항은 μ„œλ²„μ— 뢀담이 λ˜μ§€λ§Œ, HTTP 헀더λ₯Ό 톡해 그것을 μ™„ν™”μ‹œν‚¬ 수 μžˆλ‹€. 그런 덕뢄에 λ¬Έμ„œλŠ” λ‹€λ₯Έ λ„λ©”μΈμœΌλ‘œλΆ€ν„° μ „λ‹¬λœ 정보λ₯Ό νŒ¨μΉ˜μ›Œν¬ν•  수 μžˆλ‹€.

μŠ€λˆ„ν•‘ : λ„€νŠΈμ›Œν¬ 상에 λ– λ„λŠ” μ€‘μš” 정보λ₯Ό λͺ°λž˜ ν­λ“ν•˜λŠ” ν–‰μœ„

인증

μ–΄λ–€ νŽ˜μ΄μ§€λ“€μ€ λ³΄ν˜Έλ˜μ–΄ μ˜€λ‘œμ§€ νŠΉμ • μ‚¬μš©μžλ§Œμ΄ 그것에 μ ‘κ·Όν•  μˆ˜λ„ μžˆλ‹€. κΈ°λ³Έ 인증은 HTTPλ₯Ό 톡해 WWW-AuthenticateΒ (en-US)Β λ˜λŠ” μœ μ‚¬ν•œ 헀더λ₯Ό μ‚¬μš©ν•΄ μ œκ³΅λ˜κ±°λ‚˜,Β  HTTP μΏ ν‚€λ₯Ό μ‚¬μš©ν•΄ νŠΉμ • μ„Έμ…˜μ„ μ„€μ •ν•˜μ—¬ μ΄λ£¨μ–΄μ§ˆ μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€.

ν”„λ‘μ‹œμ™€ 터널링

μ„œλ²„/ν΄λΌμ΄μ–ΈνŠΈ ν˜Ήμ€ κ·Έ λ‘˜ λ‹€ μ’…μ’… μΈνŠΈλΌλ„·μ— μœ„μΉ˜ν•˜λ©° λ‹€λ₯Έ κ°œμ²΄λ“€μ—κ²Œ κ·Έλ“€μ˜ μ‹€μ œ μ£Όμ†Œλ₯Ό μˆ¨κΈ°κΈ°λ„ ν•œλ‹€. HTTP μš”μ²­μ€ λ„€νŠΈμ›Œν¬ μž₯벽을 κ°€λ‘œμ§€λ₯΄κΈ° μœ„ν•΄ ν”„λ‘μ‹œλ₯Ό 톡해 λ‚˜κ°€κ²Œ λœλ‹€. ν•˜μ§€λ§Œ λͺ¨λ“  ν”„λ‘μ‹œκ°€ HTTP ν”„λ‘μ‹œλŠ” μ•„λ‹ˆλ‹€.

ν”„λ‘μ‹œ(Proxy) 와 ν”„λ‘μ‹œ μ„œλ²„ ν΄λΌμ΄μ–ΈνŠΈκ°€ μžμ‹ μ„ ν†΅ν•΄μ„œ λ‹€λ₯Έ λ„€νŠΈμ›Œν¬ μ„œλΉ„μŠ€μ— κ°„μ ‘μ μœΌλ‘œ 접속할 수 있게 ν•΄ μ£ΌλŠ” 컴퓨터 μ‹œμŠ€ν…œμ΄λ‚˜ μ‘μš© ν”„λ‘œκ·Έλž¨μ„ 가리킴. μ„œλ²„μ™€ ν΄λΌμ΄μ–ΈνŠΈ 사이에 μ€‘κ³„κΈ°λ‘œμ„œ λŒ€λ¦¬λ‘œ 톡신을 μˆ˜ν–‰ν•˜λŠ” ν–‰μœ„ 자체λ₯Ό ν”„λ‘μ‹œλΌκ³  ν•˜λ©°, κ·Έ 쀑계 κΈ°λŠ₯을 ν•˜λŠ” 것을 ν”„λ‘μ‹œ μ„œλ²„λΌκ³  λΆ€λ₯Έλ‹€

μ„Έμ…˜

μΏ ν‚€ μ‚¬μš©μ„ 톡해 μ„œλ²„ μƒνƒœλ₯Ό μš”μ²­κ³Ό μ—°κ²°μ‹œν‚¨λ‹€. statelessν•œ ν”„λ‘œν† μ½œμž„μ—λ„ μ„Έμ…˜μ„ λ§Œλ“€μ–΄μ£ΌλŠ” 계기가 λœλ‹€. λΈŒλΌμš°μ €μ˜ 이컀머슀 웹같은 κ³³μ—μ„œλ„ μž₯λ°”κ΅¬λ‹ˆμ— 담은 ν›„ λ‚˜κ°”λ‹€ 듀어와도 μœ μ§€μ‹œμΌœμ£ΌλŠ” 그런 κΈ°λŠ₯을 ν•  수 μžˆλ‹€.

HTTP 흐름

ν΄λΌμ΄μ–ΈνŠΈκ°€ μ„œλ²„μ™€ 톡신할 λ•Œ, μ€‘κ°„ν”„λ‘μ‹œκ°€ ν•˜λŠ” λ‹€μŒμ˜ 과정은 μ•„λž˜μ™€ κ°™λ‹€.

1. TCP μ—°κ²° μ—΄κΈ°

TCP(Transport Control Protocol) 연결은 μš”μ²­μ„ λ³΄λ‚΄κ±°λ‚˜ 응닡을 λ°›λŠ”λ° μ‚¬μš©λœλ‹€.

2. HTTP λ©”μ„Έμ§€ 전솑

인간이 읽을 수 μžˆλŠ” ν˜•νƒœμ˜ λ©”μ„Έμ§€(HTTP/2 이전) HTTP/2μ—μ„œλŠ” 직접 μ½λŠ”κ²Œ λΆˆκ°€λŠ₯ν•˜μ§€λ§Œ 원칙은 λ™μΌν•˜λ‹€

GET / HTTP/1.1
Host: developer.mozilla.org
Accept-Language: fr

3. μ„œλ²„μ— μ˜ν•΄ μ „μ†‘λœ 응닡 읽기

HTTP/1.1 200 OK
Date: Sat, 09 Oct 2010 14:28:02 GMT
Server: Apache
Last-Modified: Tue, 01 Dec 2009 20:18:22 GMT
ETag: "51142bc1-7449-479b075b2891b"
Accept-Ranges: bytes
Content-Length: 29769
Content-Type: text/html
<!DOCTYPE html... (here comes the 29769 bytes of the requested web page)

4. 연결을 λ‹«κ±°λ‚˜ λ‹€λ₯Έ μš”μ²­μ„ μœ„ν•œ μž¬μ‚¬μš©

HTTP νŒŒμ΄ν”„λΌμ΄λ‹μ΄ ν™œμ„±ν™”λ˜λ©΄ 첫번째 응닡을 μ™„μ „νžˆ μˆ˜μ‹ ν•  λ•ŒκΉŒμ§€ 기닀리지 μ•Šκ³  μ—¬λŸ¬ μš”μ²­μ„ 보낼 수 μžˆλ‹€.

HTTP νŒŒμ΄ν”„λΌμ΄λ‹ μ—¬λŸ¬ μš”μ²­μœΌλ‘œ μ›Ή μ„±λŠ₯을 κ°œμ„ ν•˜λŠ” 방법. 단일 TCP 연결을 톡해 μ—¬λŸ¬ HTTP μš”μ²­μ„ λ³΄λ‚΄λŠ” 기술 HTTP/1.1 ν΄λΌμ΄μ–ΈνŠΈμ˜ 경우 λ‹€μˆ˜μ˜ HTTP μš”μ²­μ„ ν•˜λ‚˜μ˜ TCP/IP Packet으둜 μ—°μ†μ μœΌλ‘œ Packingν•΄μ„œ μš”μ²­μ„ 보낸닀. HTTP/2μ—μ„œλŠ” 이미 닀쀑화λ₯Ό ν†΅ν•©ν•˜κ³  μžˆμœΌλ―€λ‘œ νŒŒμ΄ν”„λΌμ΄λ‹ 없이 HTTP/2의 속도λ₯Ό κ°œμ„ ν–ˆλ‹€.

HTTP λ©”μ„Έμ§€

HTTP/1.1κ³Ό 초기 HTTPλŠ” μ‚¬λžŒμ΄ 읽을 수 μžˆμ§€λ§Œ HTTP/2λŠ” μƒˆλ‘œμš΄ 이진 ꡬ쑰인 ν”„λ ˆμž„ μ•ˆμœΌλ‘œ μž„λ² λ“œλ˜μ–΄ 읽을 수 μ—†λ‹€. ν•˜μ§€λ§Œ μœ„μ—μ„œ λ§ν–ˆλ“― λ©”μ„Έμ§€μ˜ 원칙은 λ™μΌν•˜λ©°, 각 λ©”μ„Έμ§€μ˜ μ˜λ―Έλ“€ λ˜ν•œ λ³€ν™”ν•˜μ§€ μ•Šμ•˜λ‹€. λ”°λΌμ„œ HTTP/1.1의 포맷을 μ΄ν•΄ν•œλ‹€λ©΄ HTTP/2 λ˜ν•œ 이해할 수 μžˆλ‹€.

μš”μ²­

### Method HTTP λ©”μ„œλ“œλ‘œ ν΄λΌμ΄μ–ΈνŠΈκ°€ μˆ˜ν–‰ν•˜κ³ μž ν•˜λŠ” λ™μž‘μ„ μ •μ˜ν•œλ‹€(GET, POST λ“±).

Path

κ°€μ Έμ˜€λ €λŠ” λ¦¬μ†ŒμŠ€μ˜ 경둜. ν”„λ‘œν† μ½œ(http://), 도메인, TCP 포트인 μš”μ†Œλ“€μ„ μ œκ±°ν•œ λ¦¬μ†ŒμŠ€μ˜ URL

Version of the Protocol

HTTP ν”„λ‘œν† μ½œμ˜ 버전

μ„œλ²„μ— λŒ€ν•œ 좔가적인 정보λ₯Ό 전달

응닡

### Version of the Protocol HTTP ν”„λ‘œν† μ½œμ˜ 버전

Status Code

μš”μ²­μ˜ 성곡 여뢀와 κ·Έ 이유λ₯Ό μ½”λ“œλ₯Ό 톡해 λ‚˜νƒ€λ‚Έλ‹€.(200, 404λ“±)

Satus message

μƒνƒœ μ½”λ“œμ˜ 짧은 μ„€λͺ… 200 - 성곡, 404 - Not Found λ“±

Headers

μš”μ²­κ³Ό λ§ˆμ°¬κ°€μ§€λ‘œ μ„œλ²„μ— λŒ€ν•œ 좔가적인 정보λ₯Ό λ‹΄λŠ”λ‹€

HTTP 기반 API

HTTP 기반으둜 κ°€μž₯ 일반적으둜 μ‚¬μš©λœ APIλŠ” XMLHttpRequest API이닀. μ΅œμ‹  Fetch APIλŠ” 이보닀 κ°•λ ₯ν•˜κ³  μœ μ—°ν•œ κΈ°λŠ₯을 μ§€λ‹Œλ‹€.

λ‹€λ₯Έ API둜 μ„œλ²„-전솑 μ΄λ²€νŠΈμ™€ Websocket API 등이 μžˆλ‹€.

XMLHttpRequest μ„œλ²„μ™€ μƒν˜Έμž‘μš©ν•  λ•Œ μ‚¬μš©ν•˜λŠ” 객체(XHR)둜 νŽ˜μ΄μ§€μ˜ μƒˆλ‘œκ³ μΉ¨ 없이 URLμ—μ„œ 데이터λ₯Ό κ°€μ Έμ˜¬ 수 μžˆλ‹€. AJAX ν”„λ‘œκ·Έλž˜λ°μ— 많이 μ‚¬μš©λœλ‹€.

Fetch API λ„€νŠΈμ›Œν¬ 톡신을 ν¬ν•¨ν•œ λ¦¬μ†ŒμŠ€ 취득을 μœ„ν•œ μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ œκ³΅ν•œλ‹€. Request와 Response, 기타 λ„€νŠΈμ›Œν¬ μš”μ²­μ— κ΄€λ ¨λœ 것듀을 μ‚¬μš©ν•˜κ³ , CORS와 HTTP Origin 헀더 행동 λ“± κ΄€λ ¨ν•œ κ°œλ…λ„ ν¬ν•¨ν•˜κ³  μžˆλ‹€.

μ„œλ²„-전솑 이벀트(Server-sent events) μ›λž˜λŠ” μƒˆλ‘œμš΄ 데이터λ₯Ό λ°›κΈ° μœ„ν•΄ μ„œλ²„λ‘œ μš”μ²­μ„ 보내야 ν–ˆμ§€λ§Œ Server-sent Events 방식은 μ›ΉνŽ˜μ΄μ§€μ˜ μš”μ²­ 없이도 μ–Έμ œλŠ”μ§€ μ„œλ²„κ°€ μƒˆλ‘œμš΄ 데이터λ₯Ό 보낼 수 μžˆλ‹€. μ΄λ ‡κ²Œ 보내진 λ©”μ„Έμ§€λŠ” μ›ΉνŽ˜μ΄μ§€μ—μ„œ Events(DOMμ—μ„œ λ°œμƒν•˜λŠ” 이벀트)와 λ°μ΄ν„°λ‘œ λ‹€λ£° 수 μžˆλ‹€. 이벀트 λ°μ΄ν„°λ‚˜ λ©”μ„Έμ§€ 데이터λ₯Ό μ„œλ²„μ—μ„œ κ°€μ Έμ˜€λŠ” 톡신에 μœ λ¦¬ν•˜λ‹€

WebSocket API μ‚¬μš©μžμ˜ λΈŒλΌμš°μ €μ™€ μ„œλ²„ μ‚¬μ΄μ˜ μΈν„°μ•‘ν‹°λΈŒ 톡신 μ„Έμ…˜μ„ μ„€μ •ν•  수 있게 ν•΄μ€€λ‹€. μ„œλ²„λ₯Ό ν’€λ§ν•˜μ§€ μ•Šκ³ λ„ 이벀트 쀑심 응닡을 λ°›λŠ” 것이 κ°€λŠ₯ν•˜λ‹€. μ™„μ „ν•œ μ–‘λ°©ν–₯ ν†΅μ‹ μ˜ κ²½μš°μ—λŠ” Server-sent Event보닀 WebSocket APIκ°€ μœ λ¦¬ν•˜λ‹€.