λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
πŸ“š Computer Science/Network

HTTP와 μ›Ή 톡신 기초

by hyebin (Helia) 2025. 11. 26.
λ°˜μ‘ν˜•

1. HTTPλž€?

HTTP(HyperText Transfer Protocol)λŠ” μ›Ή λΈŒλΌμš°μ €μ™€ μ„œλ²„κ°€ μ„œλ‘œ 데이터λ₯Ό μ£Όκ³  받을 λ•Œ μ‚¬μš©ν•˜λŠ” κ·œμΉ™(ν”„λ‘œν† μ½œ) μž…λ‹ˆλ‹€.

  • μ‚¬μš©μžλŠ” λΈŒλΌμš°μ €μ—μ„œ μ£Όμ†Œλ₯Ό μž…λ ₯ν•˜κ±°λ‚˜ λ²„νŠΌμ„ 클릭
  • λΈŒλΌμš°μ €λŠ” μ„œλ²„μ—κ²Œ μš”μ²­(request)을 전솑
  • μ„œλ²„λŠ” μš”μ²­μ„ μ²˜λ¦¬ν•œ ν›„, 응닡(response)을 전솑

μ΄λ•Œ “μš”μ²­κ³Ό 응닡을 μ–΄λ–€ ν˜•μ‹μœΌλ‘œ 주고받을지”λ₯Ό 정해놓은 약속이 λ°”λ‘œ HTTP μž…λ‹ˆλ‹€.


2. HTTP λ©”μ„œλ“œμ™€ Idempotent

HTTP μš”μ²­μ—λŠ” “이 μš”μ²­μœΌλ‘œ 무엇을 ν•˜κ³  싢은지”λ₯Ό λ‚˜νƒ€λ‚΄λŠ” 동사가 μžˆμŠ΅λ‹ˆλ‹€.

이것이 λ°”λ‘œ HTTP λ©”μ„œλ“œ(Method) μž…λ‹ˆλ‹€.

2-1. 자주 μ“°λŠ” HTTP λ©”μ„œλ“œ

GET

  • μ„œλ²„μ˜ λ¦¬μ†ŒμŠ€λ₯Ό μ‘°νšŒν•  λ•Œ μ‚¬μš©
  • ex) κ²Œμ‹œκΈ€ λͺ©λ‘ κ°€μ Έμ˜€κΈ°, νŠΉμ • κΈ€ 상세 쑰회 λ“±

POST

  • μ„œλ²„μ— μƒˆλ‘œμš΄ λ¦¬μ†ŒμŠ€λ₯Ό 생성할 λ•Œ μ‚¬μš©
  • ex) νšŒμ›κ°€μž…, κΈ€ μž‘μ„± λ“±

PUT

  • λ¦¬μ†ŒμŠ€λ₯Ό ν†΅μ§Έλ‘œ μˆ˜μ •(μΉ˜ν™˜)ν•  λ•Œ μ‚¬μš©
  • ex) κ²Œμ‹œκΈ€ 전체λ₯Ό μƒˆλ‘œμš΄ λ‚΄μš©μœΌλ‘œ λ°”κΎΈκΈ°

PATCH

  • λ¦¬μ†ŒμŠ€λ₯Ό λΆ€λΆ„μ μœΌλ‘œ μˆ˜μ •ν•  λ•Œ μ‚¬μš©
  • ex) κ²Œμ‹œκΈ€ 제λͺ© μˆ˜μ •

DELETE

  • λ¦¬μ†ŒμŠ€λ₯Ό μ‚­μ œν•  λ•Œ μ‚¬μš©

2-2. Idempotent(λ©±λ“±μ„±) μ΄λž€?

λ©±λ“±(Idempotent) μ΄λΌλŠ” “κ°œλ…μ€ 같은 μš”μ²­μ„ μ—¬λŸ¬ 번 보내도 κ²°κ³Όκ°€ 달라지지 μ•ŠλŠ” μ„±μ§ˆ”을 μ˜λ―Έν•©λ‹ˆλ‹€.

예λ₯Ό λ“€μ–΄ DELETE/posts/1 μš”청이 μ˜€λŠ” 경우

  • 첫 번째 μš”μ²­: 1번 κΈ€ μ‚­μ œ
  • 두 번째 μš”μ²­: 이미 글이 μ‚­μ œλœ μƒνƒœλΌ μ‚­μ œν•  λŒ€μƒμ΄ μ—†μŒ. 결과적으둜 μ„œλ²„μ˜ μƒνƒœλŠ” “μ‚­μ œλœ μƒνƒœ”둜 λ³€ν•˜μ§€ μ•ŠμŒ

⇒ 즉, μ—¬λŸ¬ 번 μš”μ²­ν•΄λ„ μ΅œμ’… μƒνƒœκ°€ κ°™μŠ΅λ‹ˆλ‹€. 이런 λ©”μ„œλ“œλŠ” λ©±λ“±ν•˜λ‹€κ³ ν•©λ‹ˆλ‹€.

 

보톡 POSTλ₯Ό μ œμ™Έν•œ λ‹€λ₯Έ λ©”μ„œλ“œλ“€μ€ λ©±λ“±ν•˜λ‹€κ³  ν•©λ‹ˆλ‹€.

  • GET /posts/1을 10번 ν˜ΈμΆœν•΄λ„ 쑰회만 ν•˜λ―€λ‘œ λ°μ΄ν„°λŠ” λ³€ν•˜μ§€ μ•ŠμŒ
  • POST /paymentsλ₯Ό 10번 ν˜ΈμΆœν•˜λ©΄ κ²°μ œκ°€ 10번 일어날 수 있음

HTTP κΈ°μ€€ POSTλ₯Ό μ œμ™Έν•œ λ©”μ„œλ“œλŠ” λ©±λ“±ν•˜κ²Œ μ„€κ³„λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.
ν•˜μ§€λ§Œ μ‹€μ œ μ„œλ²„ κ΅¬ν˜„μ—μ„œ GET ν˜ΈμΆœλ§ˆλ‹€ 쑰회수λ₯Ό μ¦κ°€μ‹œν‚€κ±°λ‚˜, DELETE μ‹œλ§ˆλ‹€ 둜그λ₯Ό μΆ”κ°€ν•˜λ©΄ 멱등성이 깨질 수 μžˆμŠ΅λ‹ˆλ‹€.

즉, 멱등성은 λ©”μ„œλ“œ 자체의 νŠΉμ§•μ΄λΌκΈ°λ³΄λ‹€, 같은 μš”μ²­μ΄ μ„œλ²„ μƒνƒœλ₯Ό λ³€ν™”μ‹œν‚€μ§€ μ•Šλ„λ‘ κ΅¬ν˜„ν•˜λŠ” 것이 ν•΅μ‹¬μž…λ‹ˆλ‹€.

 

μ™œ 멱등성이 μ€‘μš”ν• κΉŒμš”?

  • λ„€νŠΈμ›Œν¬ μž₯μ• λ‘œ 인해 μš”μ²­μ΄ 쀑볡될 수 있음
  • μ„œλ²„ λ˜λŠ” ν΄λΌμ΄μ–ΈνŠΈμ—μ„œ μž¬μ‹œλ„ λ‘œμ§μ„ 넣을 수 있음

⇒ μ΄λ•Œ λ©”μ„œλ“œλ₯Ό μ—¬λŸ¬ 번 ν˜ΈμΆœν•΄λ„ λ˜λŠ”μ§€λ₯Ό νŒλ‹¨ν•˜λŠ” 기쀀이 λ©±λ“±μ„±μž…λ‹ˆλ‹€.


3. HTTP/1.1, HTTP/2, HTTP/3의 차이

HTTPλŠ” 버전이 μ˜¬λΌκ°€λ©΄μ„œ μ„±λŠ₯κ³Ό 효율이 κ°œμ„ λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

3-1. HTTP/1.1

  1. ν…μŠ€νŠΈ 기반 ν”„λ‘œν† μ½œ
    •   μš”μ²­/응닡 헀더가 μ‚¬λžŒμ΄ 읽을 수 μžˆλŠ” ν…μŠ€νŠΈ ν˜•νƒœμž…λ‹ˆλ‹€.
  2. 기본적으둜 Keep-Alive 지원
    •   ν•˜λ‚˜μ˜ TCP 연결을 μ—¬λŸ¬ μš”μ²­μ— μž¬μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  3. 단점: HOL(Head Of Line) Blocking
    •   λΈŒλΌμš°μ €κ°€ μ—¬λŸ¬ λ¦¬μ†ŒμŠ€(HTML, CSS, JS, 이미지 λ“±)λ₯Ό 받아와야 ν•  λ•Œ ν•œ μ—°κ²°μ—μ„œ μš”μ²­μ„ μˆœμ„œλŒ€λ‘œ μ²˜λ¦¬ν•˜λ‹€ λ³΄λ‹ˆ μ•ž μš”μ²­μ΄ λŠλ €μ§€λ©΄ λ’€ μš”μ²­λ„ 같이 λŠλ €μ§€λŠ” λ¬Έμ œκ°€ μžˆμŠ΅λ‹ˆλ‹€.
    •   이 λ•Œλ¬Έμ— λΈŒλΌμš°μ €λŠ” 보톡 도메인당 μ—¬λŸ¬ 개의 TCP 연결을 μ—΄μ–΄ ν•΄κ²°ν•˜λ € ν–ˆμŠ΅λ‹ˆλ‹€.

3-2. HTTP/2

HTTP/2λŠ” ν•œ μ—°κ²°λ‘œ μ—¬λŸ¬ μš”μ²­μ„ λ™μ‹œμ— μ²˜λ¦¬ν•˜λŠ” 것에 μ΄ˆμ μ„ 맞좘 λ²„μ „μž…λ‹ˆλ‹€.

  1. Binary ν”„λ‘œν† μ½œ
    •   ν…μŠ€νŠΈκ°€ μ•„λ‹Œ 이진(binary) ν˜•μ‹μœΌλ‘œ ν†΅μ‹ ν•©λ‹ˆλ‹€.
    •   νŒŒμ‹± 속도가 λΉ λ₯΄κ³  νš¨μœ¨μ μž…λ‹ˆλ‹€.
  2. Multiplexing(닀쀑화)
    •   ν•˜λ‚˜μ˜ TCP μ—°κ²° μ•ˆμ—μ„œ μ—¬λŸ¬ μš”μ²­κ³Ό 응닡을 λ™μ‹œμ— μ²˜λ¦¬ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
    •   HTTP/1.1μ—μ„œ λ°œμƒν•˜λ˜ HOL Blocking λ¬Έμ œκ°€ μ™„ν™”λ©λ‹ˆλ‹€.
  3. Header Compression
    •   λ§€ μš”μ²­λ§ˆλ‹€ 큰 헀더λ₯Ό μ••μΆ•ν•΄μ„œ μ „μ†‘ν•©λ‹ˆλ‹€.
    •   λ„€νŠΈμ›Œν¬ μ‚¬μš©λŸ‰μ΄ μ€„μ–΄λ“­λ‹ˆλ‹€.
  4. Server Push
    •   μ„œλ²„κ°€ ν΄λΌμ΄μ–ΈνŠΈκ°€ μš”μ²­ν•˜μ§€ μ•Šμ€ λ¦¬μ†ŒμŠ€λ₯Ό λ¨Όμ € 보내쀄 수 μžˆλŠ” κΈ°λŠ₯μž…λ‹ˆλ‹€.
    •   μ‹€μ œλ‘œ μΊμ‹œ, 쀑볡 문제 λ“±μ˜ 이유둜 많이 μ‚¬μš©λ˜μ§€λŠ” μ•ŠμŠ΅λ‹ˆλ‹€.

3-3. HTTP/3

HTTP/3λŠ” TCP λŒ€μ‹  QUIC(UDP 기반 ν”„λ‘œν† μ½œ)을 μ‚¬μš©ν•˜μ—¬ μ—°κ²° μ„±λŠ₯을 더 κ°œμ„ ν•œ λ²„μ „μž…λ‹ˆλ‹€.

  1. TCPκ°€ μ•„λ‹Œ QUIC μ‚¬μš©
    •   TCP의 μ—°κ²° μ„€μ •, 혼작 μ œμ–΄, μž¬μ „μ†‘ λ“±μ—μ„œ μ˜€λŠ” 지연을 쀄이기 μœ„ν•œ λͺ©μ μž…λ‹ˆλ‹€.
  2. λΉ λ₯Έ μ—°κ²° μ„€μ •
    •   TLS와 μ—°κ²° 섀정을 합쳐 더 λΉ λ₯΄κ²Œ 톡신을 μ‹œμž‘ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
      •    TLSλŠ” 'Transport Layer Security'의 μ•½μžλ‘œ, 인터넷 μƒμ˜ 톡신 데이터λ₯Ό μ•”ν˜Έν™”ν•˜μ—¬ λ³΄ν˜Έν•˜λŠ” λ³΄μ•ˆ ν”„λ‘œν† μ½œ
  3. HOL Blocking 문제 μΆ”κ°€
    •   TCPλŠ” νŒ¨ν‚·μ΄ 쀑간에 μœ μ‹€λ˜λ©΄ ν•΄λ‹Ή νŒ¨ν‚·μ΄ μž¬μ „μ†‘λ  λ•ŒκΉŒμ§€ 뒀에 온 νŒ¨ν‚·λ“€λ„ λŒ€κΈ°ν•΄μ•Ό ν•©λ‹ˆλ‹€.
    •   QUIC은 슀트림 λ‹¨μœ„λ‘œ 처리되기 λ•Œλ¬Έμ— ν•˜λ‚˜μ˜ μŠ€νŠΈλ¦Όμ—μ„œ νŒ¨ν‚·μ΄ μœ μ‹€λ˜μ–΄λ„ λ‹€λ₯Έ μŠ€νŠΈλ¦Όμ— 영ν–₯을 덜 μ€λ‹ˆλ‹€.

4. Keep-Aliveλž€?

HTTP/1.0 μ‹œμ ˆ μš”μ²­μ΄ 였면 TCP 연결을 μƒμ„±ν•˜κ³ , 응닡이 μ™„λ£Œλ˜λ©΄ TCP 연결을 μ’…λ£Œμ‹œν‚€λŠ” 과정을 λ°˜λ³΅ν–ˆμŠ΅λ‹ˆλ‹€. ν•˜μ§€λ§Œ TCP 연결을 μ—΄κ³  λ‹«λŠ” 것은 λΉ„μš©μ΄ 많이 λ“­λ‹ˆλ‹€.

κ·Έλž˜μ„œ λ“±μž₯ν•œ 것이 Keep-Aliveμž…λ‹ˆλ‹€. ν•˜λ‚˜μ˜ TCP 연결을 μ—¬λŸ¬ μš”μ²­μ—μ„œ μž¬μ‚¬μš©ν•©λ‹ˆλ‹€.

 

TCP μ—°κ²° μƒμ„±μ—λŠ” 3-way handshakeκ°€ ν•„μš”ν•©λ‹ˆλ‹€. 이 과정을 λ°˜λ³΅ν•˜λ©΄ μ§€μ—° μ‹œκ°„μ΄ λŠ˜μ–΄λ‚˜κ³  λΆ€ν•˜κ°€ μ»€μ§‘λ‹ˆλ‹€.

κ·Έλž˜μ„œ Keep-Aliveλ₯Ό μ‚¬μš©ν•˜λ©΄ ν•œ 번 μ—°κ²°ν•œ ν›„ μ—¬λŸ¬ HTTP μš”μ²­μ„ 같은 μ—°κ²°λ‘œ 보낼 수 μžˆμœΌλ―€λ‘œ μ„±λŠ₯이 ν–₯μƒλ©λ‹ˆλ‹€.


5. HTTP vs HTTPS

HTTPλŠ” μ•”ν˜Έν™”λ˜μ§€ μ•Šμ€ 평문 ν†΅μ‹ μž…λ‹ˆλ‹€. μ€‘κ°„μ—μ„œ νŒ¨ν‚·μ„ κ°€λ‘œμ±„λ©΄, μš”μ²­ λ‚΄μš©κ³Ό 응닡 λ‚΄μš©μ„ κ·ΈλŒ€λ‘œ λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€.

HTTPSλŠ” HTTP μœ„μ— TLS(μ˜› SSL) 계측을 올렀 μ•”ν˜Έν™”λœ 톡신을 ν•©λ‹ˆλ‹€. μ€‘κ°„μ—μ„œ νŒ¨ν‚·μ„ κ°€λ‘œμ±„λ”λΌλ„ μ•”ν˜Έν™” λ˜μ–΄μžˆκΈ° λ•Œλ¬Έμ— λ‚΄μš©μ„ 해석할 수 μ—†μŠ΅λ‹ˆλ‹€.

 

TLS Handsahke

좜처: λ‚˜λ¬΄μœ„ν‚€

  1. Client Hello
    • ν΄λΌμ΄μ–ΈνŠΈμ—μ„œ μ„œλ²„μ—κ²Œ μ—¬κΈ°μ—λŠ” ν΄λΌμ΄μ–ΈνŠΈμ—μ„œ μ‚¬μš© κ°€λŠ₯ν•œ TLS 버전, μ„œλ²„ 도메인, μ„Έμ…˜ μ‹λ³„μž, μ•”ν˜Έ μ„€μ • λ“±μ˜ 정보λ₯Ό ν¬ν•¨ν•΄μ„œ 전솑
  2. Server Hello
    • μ„œλ²„κ°€ ClientHello λ©”μ‹œμ§€μ˜ 정보 쀑 μ„œλ²„μ—μ„œ μ‚¬μš©ν•˜κΈ°λ‘œ μ„ νƒν•œ TLS 버전, μ„Έμ…˜ μ‹λ³„μž, μ•”ν˜Έ μ„€μ • λ“±μ˜ 정보λ₯Ό 포함해 응닡
    • μΈμ¦μ„œ 전솑
  3. μΈμ¦μ„œ 검증
    • ν΄λΌμ΄μ–ΈνŠΈλŠ” μ„œλ²„κ°€ 보낸 μΈμ¦μ„œλ₯Ό ν™•μΈν•˜κ³ , μ‹ λ’°ν•  수 μžˆλŠ” 인증 κΈ°κ΄€μ—μ„œ λ°œκΈ‰λ°›μ€ 것인지 검증
  4. λŒ€μΉ­ν‚€ 생성 및 곡유
    • ν΄λΌμ΄μ–ΈνŠΈμ™€ μ„œλ²„λŠ” μ΅œμ’…μ μœΌλ‘œ λŒ€μΉ­ν‚€(같은 ν‚€)λ₯Ό 곡유
    • 이 ν‚€λ‘œ μ΄ν›„μ˜ HTTP μš”μ²­/응닡을 μ•”ν˜Έ
  5. μ•”ν˜Έν™”λœ 데이터 전솑 μ‹œμž‘

6. CORS(Cross-Origin Resource Sharing) λž€?

λΈŒλΌμš°μ €λŠ” λ³΄μ•ˆ 상 이유둜 λ‹€λ₯Έ 좜처둜의 μš”μ²­μ— μ œν•œμ„ λ‘‘λ‹ˆλ‹€. μ—¬κΈ°μ„œ μΆœμ²˜λŠ” λ‹€μŒ 3κ°€μ§€λ₯Ό ν•©μΉœ κ²ƒμž…λ‹ˆλ‹€.

  • ν”„λ‘œν† μ½œ (http/https)
  • 도메인 (example.com)
  • 포트 (:8080 λ“±)

이 μ„Έ κ°€μ§€ 쀑 ν•˜λ‚˜λΌλ„ λ‹€λ₯΄λ©΄ λ‹€λ₯Έ 좜처둜 κ°„μ£Όν•©λ‹ˆλ‹€.

 

그런데 μ‹€μ œ μ›Ή μ„œλΉ„μŠ€μ—λŠ” λ‹€λ₯Έ 좜처둜 μš”μ²­ν•΄μ•Ό ν•˜λŠ” κ²½μš°κ°€ λ§ŽμŠ΅λ‹ˆλ‹€.

κ·Έλž˜μ„œ CORSλŠ” λ³΄μ•ˆ λ•Œλ¬Έμ— μ°¨λ‹¨λœ cross-origin μš”μ²­μ„ λΈŒλΌμš°μ €κ°€ ν—ˆμš©ν•  수 μžˆλ„λ‘ μ„œλ²„κ°€ ‘이 μš”μ²­μ€ ν—ˆμš©ν•΄λ„ λœλ‹€’λŠ” 정보λ₯Ό λͺ…μ‹œμ μœΌλ‘œ μ œκ³΅ν•˜λŠ” λ©”μ»€λ‹ˆμ¦˜ μž…λ‹ˆλ‹€.

 

6-1. CORS μ—λŸ¬κ°€ λ°œμƒν•˜λŠ” 이유

CORS μ—λŸ¬κ°€ λ°œμƒν•˜λŠ” μ΄μœ λŠ” λΈŒλΌμš°μ €κ°€ 응닡을 막기 λ•Œλ¬Έμž…λ‹ˆλ‹€.

흐름을 λ‹€μ‹œ 정리해보면,

  1. ν”„λ‘ νŠΈκ°€ μ„œλ²„μ— μš”μ²­μ„ λ³΄λƒ…λ‹ˆλ‹€.
  2. μ„œλ²„λŠ” μ •μƒμ μœΌλ‘œ 응닡을 λ³΄λƒˆμ„ 수 μžˆμŠ΅λ‹ˆλ‹€.
  3. ν•˜μ§€λ§Œ 응닡 헀더에 Access-Control-Allow-Origin: http://localhost:3000 κ°™μ€ ν—ˆμš© 증거가 μ—†λ‹€λ©΄,
  4. λΈŒλΌμš°μ €κ°€ 응닡 κ²°κ³Όλ₯Ό μžλ°”μŠ€ν¬λ¦½νŠΈμ— μ „λ‹¬ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

κ·Έλž˜μ„œ 개발자 λ„κ΅¬μ—μ„œλŠ” CORS μ—λŸ¬κ°€ λ–΄λŠ”λ°, μ„œλ²„ λ‘œκ·ΈλŠ” λ©€μ©‘ν•œ 상황이 많이 λ°œμƒν•©λ‹ˆλ‹€.

6-2. CORS ν•΄κ²° 방법

CORS 문제λ₯Ό ν•΄κ²°ν•˜λ €λ©΄, μ„œλ²„κ°€ λΈŒλΌμš°μ €μ—κ²Œ μ΄λ ‡κ²Œ λ§ν•΄μ€˜μ•Ό ν•©λ‹ˆλ‹€.

“이 origin은 λ‚΄κ°€ μ‹ λ’°ν•˜κ³  ν—ˆμš©ν•˜λŠ” κ³³μž…λ‹ˆλ‹€.”

μ΄λ•Œ 응닡 헀더에 λ‹€μŒ 값듀을 μΆ”κ°€ν•©λ‹ˆλ‹€.

  1. μ–΄λ–€ origin을 ν—ˆμš©ν• μ§€ λͺ…μ‹œ
    • Access-Control-Allow-Origin: https://example.com
    • λ˜λŠ” 개발 λ‹¨κ³„μ—μ„œλŠ” *둜 λͺ¨λ“  좜처 ν—ˆμš©
      • μ‹€μ œ μ„œλΉ„μŠ€μ—μ„œλŠ” λ³΄μ•ˆμƒμ˜ 이유둜 μ‚¬μš©ν•˜μ§€ μ•ŠμŒ
  2. ν—ˆμš©ν•  λ©”μ„œλ“œμ™€ 헀더 λͺ…μ‹œ
    • Access-Control-Allow-Methods: GET, POST, PUT, DELETE
    • Access-Control-Allow-Headers: Content-Type, Authorization
  3. ν¬λ¦¬λ΄μ…œ(μΏ ν‚€) 포함 μš”μ²­ μ‹œ
    • Access-Control-Allow-Credentials: true
    • 이 경우 Allow-Origin은 *λ₯Ό μ“Έ 수 μ—†κ³  μ •ν™•ν•œ 도메인을 μ§€μ •ν•΄μ•Ό ν•©λ‹ˆλ‹€.
@Configuration
public class WebConfig implements WebMvcConfigurer {

    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
            .allowedOrigins("http://localhost:3000")
            .allowedMethods("GET", "POST", "PUT", "DELETE")
            .allowedHeaders("*")
            .allowCredentials(true);
    }
}
λ°˜μ‘ν˜•