HTTP & HTTPS – Nền tảng giao tiếp trên Web

Khi làm web hoặc backend, có một thứ gần như xuất hiện ở mọi nơi nhưng rất dễ bị xem là hiển nhiên: HTTP.

Mỗi khi mở một website, gọi một API, đăng nhập, gửi form hay tải một file, client và server đều cần một cách để giao tiếp với nhau.

HTTP chính là một trong những nền tảng quan trọng nhất làm nên quá trình đó.

HTTPS về cơ bản là HTTP được bảo vệ bằng TLS, giúp dữ liệu trao đổi giữa client và server được mã hóa và xác thực.

Để hiểu web hoạt động như thế nào, việc hiểu HTTP và HTTPS là rất quan trọng.

1. HTTP là gì?

HTTP – HyperText Transfer Protocol là giao thức được sử dụng để giao tiếp giữa các hệ thống trên Web.

Có thể hình dung đơn giản:

Client                         Server
  │                              │
  │────── HTTP Request ─────────>│
  │                              │
  │<───── HTTP Response ─────────│
  │                              │

Client có thể là:

  • Browser
  • Mobile App
  • Frontend
  • Một service khác
  • Postman
  • Một chương trình bất kỳ có khả năng gửi HTTP request

Server nhận request, xử lý và trả về response.

Ví dụ khi truy cập:

https://example.com/users

Browser có thể gửi request đến server để yêu cầu tài nguyên /users.

Server xử lý và trả về kết quả.

2. HTTP hoạt động theo mô hình Client – Server

HTTP thường được nhìn dưới mô hình:

Client
   │
   │ Request
   ↓
Server
   │
   │ Response
   ↓
Client

Client là bên gửi yêu cầu.

Server là bên nhận yêu cầu và trả kết quả.

Ví dụ:

Browser
   │
   │ GET /products
   ↓
Backend Server
   │
   │ JSON
   ↓
Browser

Trong một ứng dụng thực tế, client và server có thể nằm trên hai máy hoàn toàn khác nhau và giao tiếp thông qua Internet.

3. HTTP Request là gì?

HTTP Request là yêu cầu mà client gửi đến server.

Một request thường gồm:

Method
URL
Headers
Body

Ví dụ:

POST /users HTTP/1.1
Host: example.com
Content-Type: application/json

{
    "name": "John",
    "email": "[email protected]"
}

Ở đây:

POST

là HTTP Method.

/users

là resource mà client muốn thao tác.

Headers cung cấp thêm thông tin.

Body chứa dữ liệu gửi lên server.

4. HTTP Method

HTTP định nghĩa nhiều method khác nhau để mô tả mục đích của request.

Những method thường gặp nhất:

Method Ý nghĩa
GET Lấy dữ liệu
POST Tạo dữ liệu hoặc gửi dữ liệu để xử lý
PUT Cập nhật/thay thế resource
PATCH Cập nhật một phần resource
DELETE Xóa resource

Ví dụ một API quản lý user:

GET     /users
POST    /users
GET     /users/10
PUT     /users/10
PATCH   /users/10
DELETE  /users/10

Có thể hiểu:

GET     → Tôi muốn lấy
POST    → Tôi muốn tạo/gửi
PUT     → Tôi muốn thay thế/cập nhật
PATCH   → Tôi muốn cập nhật một phần
DELETE  → Tôi muốn xóa

5. HTTP Response

Sau khi server nhận và xử lý request, nó trả về HTTP Response.

Một response thường gồm:

Status Code
Headers
Body

Ví dụ:

HTTP/1.1 200 OK
Content-Type: application/json

{
    "id": 10,
    "name": "John"
}

Ở đây:

200

là status code.

Body chứa dữ liệu server trả về.

6. HTTPS là gì?

HTTPS – HyperText Transfer Protocol Secure có thể hiểu là HTTP được truyền thông qua TLS (Transport Layer Security).

Có thể hình dung:

HTTP
  +
TLS
  ↓
HTTPS

HTTPS cung cấp các thuộc tính bảo mật quan trọng cho kết nối, đặc biệt là:

  • Confidentiality – bảo mật nội dung
  • Integrity – đảm bảo dữ liệu không bị thay đổi trái phép
  • Authentication – xác thực server thông qua certificate

7. Certificate là gì?

Khi truy cập:

https://example.com

browser cần có cơ chế để xác định server thực sự đang giao tiếp có đúng là example.com hay không.

Đây là lúc Digital Certificate xuất hiện.

Certificate có thể chứa thông tin như:

Domain
Public Key
Certificate Authority
Validity Period
Digital Signature

Browser kiểm tra certificate và chuỗi tin cậy của nó.

Nếu mọi thứ hợp lệ, browser có thể tiếp tục thiết lập kết nối HTTPS.

8. Public Key và Private Key

HTTPS sử dụng cryptography với public key và private key trong quá trình thiết lập và xác thực kết nối.

Có thể hiểu đơn giản:

Public Key
→ Có thể chia sẻ

Private Key
→ Phải được giữ bí mật

Certificate thường chứa public key.

Private key được server giữ bí mật.

Một server không được để lộ private key vì nó có thể phá vỡ tính bảo mật của cơ chế xác thực liên quan.

9. Tổng kết

HTTP là một giao thức nền tảng của Web, cho phép client và server giao tiếp thông qua mô hình:

Request → Server → Response

Một HTTP request có thể chứa:

Method
URL
Headers
Body

HTTPS là HTTP được bảo vệ bằng TLS, giúp cung cấp:

Confidentiality
Integrity
Authentication

HTTPS sử dụng certificate và cryptographic mechanisms để thiết lập một kết nối an toàn giữa client và server.

Bài viết khác

Series 7 — Web Quality – Engineering :Testing – Unit Testing, Integration Testing, Web Performance – Core Web Vitals, Code Splitting, Lazy Loading

Series 7 — Web Quality – Engineering Bài 3: Testing – Unit Testing, Integration Testing và End-to-End Testing trong ứng dụng web 1. Vì sao ứng dụng web cần Testing? Trong quá trình phát triển Frontend, chúng ta thường kiểm tra ứng dụng bằng cách chạy website trên trình duyệt, nhấn vào các nút, nhập […]

Series 7 — Web Quality – Engineering : Authentication & Authorization

Series 7 — Web Quality – Engineering Bài 1: Authentication & Authorization – Xác thực và phân quyền trong ứng dụng web 1. Mở đầu Khi xây dựng một ứng dụng web có chức năng đăng nhập, chúng ta thường nghĩ rằng chỉ cần tạo biểu mẫu nhập email, mật khẩu và kiểm tra thông […]

Series 6 – Next.js Advanced – Production: Next.js Build & Deployment

Series 6 – Next.js Advanced & Production Bài 5: Next.js Build & Deployment – Từ mã nguồn đến môi trường Production 1. Mở đầu Trong quá trình phát triển một ứng dụng web, việc chạy thành công trên máy tính cá nhân chưa có nghĩa là ứng dụng đã sẵn sàng để đưa đến người […]

Series 6 – Next.js Advanced – Production: Next.js Internationalized Routing Next.js Static Export

Series 6 – Next.js Advanced & Production   Bài 3: Next.js Internationalized Routing – Tổ chức URL cho website đa ngôn ngữ 1. Mở đầu Sau khi xây dựng cơ chế dịch nội dung và định dạng theo locale, ứng dụng cần một cách để người dùng truy cập đúng phiên bản ngôn ngữ. Ví […]

Series 6 – Next.js Advanced & Production: Metadata & SEO, Internationalization (i18n) & Localization (l10n)

Series 6 – Next.js Advanced & Production Bài 1: Metadata & SEO trong Next.js – Tối ưu thông tin và khả năng hiển thị trên công cụ tìm kiếm 1. Mở đầu Khi xây dựng một website, việc hoàn thiện giao diện và chức năng mới chỉ là một phần của quá trình phát triển. […]

Series 5 – Next.js Fundamentals: CSR, SSR, SSG, ISR và cách lựa chọn

Series 5 – Next.js Fundamentals   Bài 7 : CSR, SSR, SSG và ISR – Các chiến lược Rendering trong Next.js 1. Mở đầu Khi xây dựng một website bằng React, chúng ta thường tập trung vào việc tạo component, quản lý state và hiển thị giao diện trên trình duyệt. Tuy nhiên, khi ứng dụng […]

Leave a Reply

Your email address will not be published. Required fields are marked *