Search…

HTTP Request và HTTP Response

30/08/20204 min read
Tìm hiểu về hai loại thông điệp HTTP Request và HTTP Response của giao thức HTTP.

HTTP Message

HTTP là giao thức được thiết kế theo kiểu client - server, giao tiếp giữa client và server dựa vào một cặp request - response, client đưa ra các request và server sẽ response trả lời các request này.

HTTP Request

Để bắt đầu trao đổi dữ liệu, phía client khởi tạo một HTTP session bằng cách mở một kết nối TCP đến HTTP server sau đó gửi request đến server này.

Request có thể được tạo bằng nhiều cách, trực tiếp khi người dùng nhấp vào một liên kết trên trình duyệt hoặc gián tiếp, ví dụ như một video được đính kèm trong một website và việc request đến website này sẽ dẫn đến một request tới video ấy.

REQUEST HEADERS
:authority: www.stdio.vn
:method: GET
:path: /_next/static/ZrwbBww0e97zkPL2IVopl/pages/index.js
:scheme: https
accept: application/signed-exchange;v=b3;q=0.9,*/*;q=0.8
accept-encoding: gzip, deflate, br
accept-language: en-US,en;q=0.9
cookie: ...
purpose: prefetch
referer: https://www.stdio.vn/article/http-request-va-http-response-uve8H
sec-fetch-dest: empty
sec-fetch-mode: no-cors
sec-fetch-site: same-origin
user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.135 Safari/537.36

Bắt đầu của HTTP Request bao gồm rất nhiều thông tin như trên như:

  • Accept: loại nội dung có thể nhận được từ thông điệp response. Ví dụ: text/plain, text/html, ...
  • Accept-Encoding: các kiểu nén được chấp nhận. Ví dụ: gzip, deflate, xz, exi, ...
  • Connection: tùy chọn điều khiển cho kết nối hiện thời. Ví dụ: keep-alive, Upgrade, ...
  • Cookie: thông tin HTTP Cookie từ server.
  • User-Agent: thông tin về user agent của người dùng.

Phương thức GET và POST

:method: GET

2 phương thức được sử dụng nhiều nhất trong HTTP request là GETPOST.

Với GET, câu truy vấn sẽ được đính kèm vào đường dẫn của HTTP request. Ví dụ: /?username=phipham&password=hong

1 số đặc điểm của phương thức GET:

  • Có thể được cached, bookmark và lưu trong lịch sử của trình duyệt.
  • Bị giới hạn về chiều dài, do chiều dài của URL là có hạn.
  • Không nên dùng với dữ liệu quan trọng, chỉ dùng để nhận dữ liệu.

Với POST, câu truy vấn sẽ được gửi trong phần message body của HTTP request.

1 số đặc điểm của phương thức POST:

  • Không thể, cached, bookmark hay lưu trong lịch sử trình duyệt.
  • Không bị giới hạn về độ dài.

Các phương thức khác:

Ngoài GETPOST, HTTP request còn có thể có một số phương thức khác như:

  • HEAD: giống như GET nhưng chỉ gửi về HTTP header.
  • PUT: tải lên một mô tả về URI định trước.
  • DELETE: xóa một tài nguyên định trước.
  • OPTIONS: trả về phương thức HTTP mà server hỗ trợ.
  • CONNECT: chuyển kết nối của HTTP request thành một kết nối HTTP tunnel.

HTTP Response

Cấu trúc HTTP response gần giống với HTTP request.

RESPONSE HEADERS
content-encoding: gzip
content-language: vi
content-type: text/html; charset=utf-8
date: Sun, 30 Aug 2020 09:26:40 GMT
etag: "3d976-qAWpMRUg3LVCUidZKMR1pqs9VEM"
set-cookie: next-i18next=vi; path=/; expires=Mon, 30 Aug 2021 09:26:40 GMT
status: 200
vary: Accept-Encoding
x-powered-by: Next.js
  • status: mã kết quả trả về, hay còn gọi là HTTP Status Codes.

HTTP Status Codes

Một số loại thông dụng mà server trả về cho client như sau:

1xx: information Message

Các status code này chỉ có tính chất tạm thời, client có thể không quan tâm.

2xx Successful

Khi đã xử lý thành công request của client, server trả về status dạng này:

  • 200 OK: request thành công.
  • 202 Accepted: request đã được nhận, nhưng không có kết quả nào trả về, thông báo cho client tiếp tục chờ đợi.
  • 204 No Content: request đã được xử lý nhưng không có thành phần nào được trả về.
  • 205 Reset: giống như 204 nhưng mã này còn yêu câu client reset lại document view.
  • 206 Partial Content: server chỉ gửi về một phần dữ liệu, phụ thuộc vào giá trị range header của client đã gửi.

3xx Redirection

Server thông báo cho client phải thực hiện thêm thao tác để hoàn tất request:

  • 301 Moved Permanently: tài nguyên đã được chuyển hoàn toàn tới địa chỉ Location trong HTTP response.
  • 303 See other: tài nguyên đã được chuyển tạm thời tới địa chỉ Location trong HTTP response.
  • 304 Not Modified: tài nguyên không thay đổi từ lần cuối client request, nên client có thể sử dụng đã lưu trong cache.

4xx Client error

Lỗi của client:

  • 400 Bad Request: request không đúng dạng, cú pháp.
  • 401 Unauthorized: client chưa xác thực.
  • 403 Forbidden: client không có quyền truy cập.
  • 404 Not Found: không tìm thấy tài nguyên.
  • 405 Method Not Allowed: phương thức không được server hỗ trợ.

5xx Server Error

Lỗi của server:

  • 500 Internal Server Error: có lỗi trong quá trình xử lý của server.
  • 501 Not Implemented: server không hỗ trợ chức năng client yêu cầu.
  • 503 Service Unavailable: Server bị quá tải, hoặc bị lỗi xử lý.
IO Stream

IO Stream Co., Ltd

30 Trinh Dinh Thao, Hoa Thanh ward, Tan Phu district, Ho Chi Minh city, Vietnam
+84 28 22 00 11 12
developer@iostream.co

383/1 Quang Trung, ward 10, Go Vap district, Ho Chi Minh city
Business license number: 0311563559 issued by the Department of Planning and Investment of Ho Chi Minh City on February 23, 2012

©IO Stream, 2013 - 2024