Mã trạng thái 431: Request Header Fields Too Large là gì?

INEZA Felin-Michel

INEZA Felin-Michel

22 tháng 10 2025

Mã trạng thái 431: Request Header Fields Too Large là gì?

Apidog cho doanh nghiệp

Triển khai tại chỗ

SSO & RBAC

Tuân thủ SOC 2

Khám phá Apidog Enterprise

Bạn đang cố gắng đăng nhập vào một trang web sử dụng hệ thống xác thực "magic link". Bạn nhập email, nhấp gửi, và thay vì nhận được liên kết đăng nhập, bạn lại gặp một lỗi khó hiểu: 431 Request Header Fields Too Large. Bạn không hề tải lên một tệp lớn hay gửi một tin nhắn dài – bạn chỉ nhập địa chỉ email của mình! Vậy điều gì có thể quá lớn đến vậy?

Mã trạng thái HTTP hơi khó hiểu này là cách mà web muốn nói, "Khoan đã, yêu cầu của bạn đang đội quá nhiều mũ!" Nó không phải về phần thân yêu cầu của bạn (dữ liệu thực tế bạn đang gửi); mà là về siêu dữ liệu, các tiêu đề mô tả yêu cầu của bạn đã trở nên quá lớn để máy chủ xử lý.

Nếu bạn là nhà phát triển xây dựng ứng dụng web hoặc một người dùng tò mò đã gặp lỗi này, việc hiểu mã trạng thái 431 sẽ giúp bạn giải mã những gì đang diễn ra đằng sau hậu trường.

Vậy, nó thực sự có nghĩa là gì, tại sao nó xảy ra và làm thế nào để khắc phục nó mà không bị mất trí (hoặc mất tiêu đề của bạn)?

Trong hướng dẫn chuyên sâu này, chúng ta sẽ khám phá mọi thứ bạn cần biết về Mã trạng thái HTTP 431, từ ý nghĩa kỹ thuật đến các giải pháp thực tế.

💡
Nếu bạn đang xây dựng hoặc kiểm thử API, bạn cần một công cụ cung cấp khả năng hiển thị đầy đủ các yêu cầu HTTP của bạn, bao gồm tất cả các tiêu đề đó. Tải xuống Apidog miễn phí; đây là một nền tảng API tất cả trong một cho phép bạn dễ dàng kiểm tra, sửa đổi và gỡ lỗi các tiêu đề yêu cầu, giúp bạn tránh lỗi 431 trước khi chúng đến tay người dùng.

Bây giờ, hãy cùng tìm hiểu các tiêu đề HTTP là gì, tại sao chúng đôi khi trở nên quá lớn và bạn có thể làm gì để khắc phục.

Vấn đề: Chi phí ẩn của tiêu đề HTTP

Để hiểu lỗi 431, trước tiên chúng ta cần hiểu rõ tiêu đề HTTP là gì và tại sao chúng lại quan trọng. Mỗi yêu cầu web bạn thực hiện giống như việc gửi một gói hàng. Nội dung của gói hàng (dữ liệu biểu mẫu HTML, JSON hoặc tệp) là phần thân. Nhưng mỗi gói hàng cũng cần nhãn vận chuyển và hướng dẫn—đó chính là tiêu đề HTTP.

Các tiêu đề cho máy chủ biết thông tin quan trọng về yêu cầu:

Hầu hết các tiêu đề khá nhỏ – chỉ vài chục hoặc vài trăm byte mỗi tiêu đề. Nhưng khi bạn bắt đầu xếp chồng chúng lên nhau, hoặc khi các tiêu đề riêng lẻ trở nên rất lớn, bạn có thể vượt quá giới hạn do máy chủ đặt ra.

HTTP 431 Request Header Fields Too Large thực sự có nghĩa là gì?

Mã trạng thái 431 Request Header Fields Too Large cho biết máy chủ từ chối xử lý yêu cầu vì các tiêu đề riêng lẻ, hoặc toàn bộ phần tiêu đề kết hợp, quá lớn để máy chủ xử lý.

Điều này khác với lỗi phổ biến hơn 413 Payload Too Large, vốn liên quan đến phần thân yêu cầu. Lỗi 431 đặc biệt liên quan đến tiêu đề.

Định nghĩa RFC 6585 chính thức nêu rõ:

Mã trạng thái 431 cho biết máy chủ không muốn xử lý yêu cầu vì các trường tiêu đề của nó quá lớn. Máy chủ có thể đóng kết nối để ngăn máy khách tiếp tục yêu cầu.

Một phản hồi 431 điển hình trông như thế này:

HTTP/1.1 431 Request Header Fields Too LargeContent-Type: text/htmlConnection: close
<html><head><title>431 Request Header Fields Too Large</title></head><body><center><h1>431 Request Header Fields Too Large</h1></center></body></html>

Bạn có để ý tiêu đề Connection: close không? Đó là cách máy chủ nói, "Tôi không chỉ từ chối yêu cầu này – tôi đang đóng hoàn toàn kết nối này vì tôi không tin những gì bạn đang gửi cho tôi."

Giải thích lỗi: "Quá lớn" thực sự có nghĩa là gì?

Vậy "quá lớn" trong ngữ cảnh này là gì?

Mỗi máy chủ và proxy đều có giới hạn cụ thể về kích thước tiêu đề. Các giới hạn này khác nhau tùy thuộc vào nền tảng, máy chủ web hoặc proxy ngược đang được sử dụng.

Ví dụ:

Máy chủ/Nền tảng Giới hạn kích thước tiêu đề mặc định
Nginx 4 KB mỗi trường tiêu đề
Apache Tổng cộng 8 KB
Node.js Mặc định khoảng 8 KB
AWS CloudFront Tổng cộng 20 KB
Trình duyệt Chrome Giới hạn khoảng 8 KB

Nếu các tiêu đề yêu cầu của bạn như cookie, mã thông báo xác thực hoặc siêu dữ liệu tùy chỉnh vượt quá các giới hạn này, bạn có thể sẽ gặp lỗi 431.

Tại sao máy chủ lại áp đặt giới hạn kích thước tiêu đề?

Bạn có thể tự hỏi tại sao máy chủ lại quan tâm đến kích thước tiêu đề. Có một số lý do chính đáng:

  1. Bảo vệ an ninh: Các tiêu đề quá lớn có thể là dấu hiệu của các nỗ lực tấn công. Bằng cách giới hạn kích thước tiêu đề, máy chủ tự bảo vệ khỏi các cuộc tấn công tràn bộ đệm và tấn công từ chối dịch vụ (DoS) nơi kẻ tấn công cố ý gửi các tiêu đề khổng lồ để làm quá tải máy chủ.
  2. Bảo tồn bộ nhớ: Máy chủ cần cấp phát bộ nhớ để phân tích cú pháp và lưu trữ các tiêu đề yêu cầu. Nếu một yêu cầu duy nhất có thể tiêu thụ bộ nhớ không giới hạn với các tiêu đề khổng lồ, một số lượng nhỏ yêu cầu có thể làm cạn kiệt tài nguyên của máy chủ.
  3. Tối ưu hóa hiệu suất: Xử lý các tiêu đề cực lớn tốn thời gian CPU và băng thông bộ nhớ. Bằng cách áp đặt các giới hạn hợp lý, máy chủ đảm bảo chúng có thể xử lý nhiều yêu cầu đồng thời một cách hiệu quả.
  4. Ngăn chặn lạm dụng: Nếu không có giới hạn, các máy khách độc hại có thể bao gồm hàng megabyte dữ liệu rác trong các tiêu đề, làm lãng phí tài nguyên máy chủ và băng thông.

Thủ phạm phổ biến: Điều gì làm cho tiêu đề quá lớn?

Vậy điều gì thực sự khiến các tiêu đề phình to đến mức gây ra vấn đề? Dưới đây là các kịch bản phổ biến nhất:

Đây là nguyên nhân số 1 gây ra lỗi 431. Cookie được gửi trong tiêu đề Cookie, và nếu bạn có nhiều cookie hoặc cookie rất lớn, tiêu đề đơn lẻ này có thể vượt quá giới hạn của máy chủ.

Kịch bản vấn đề: Bạn truy cập một trang web đặt nhiều cookie theo dõi, mỗi cookie lưu trữ dữ liệu đáng kể. Theo thời gian, khi bạn sử dụng trang web, nhiều cookie hơn được thêm vào. Cuối cùng, mỗi yêu cầu bạn gửi đến trang web đó bao gồm một tiêu đề Cookie dài 20KB, và máy chủ có giới hạn tiêu đề là 8KB.

2. Mã thông báo ủy quyền khổng lồ

JSON Web Tokens (JWTs) được sử dụng để xác thực có thể trở nên khá lớn, đặc biệt nếu chúng chứa nhiều dữ liệu người dùng hoặc quyền hạn.

Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyLCJwZXJtaXNzaW9ucyI6WyJyZWFkIiwi... [mã thông báo rất dài tiếp tục]

3. Tiêu đề tùy chỉnh quá mức

Một số ứng dụng thêm các tiêu đề tùy chỉnh để theo dõi, gắn cờ tính năng hoặc trạng thái ứng dụng. Nếu chúng không được quản lý cẩn thận, chúng có thể tích lũy và làm phình to kích thước tiêu đề.

4. Các cách khắc phục giới hạn độ dài URL

Khi các nhà phát triển gặp phải giới hạn độ dài URL (thường khoảng 2.000 ký tự), đôi khi họ cố gắng khắc phục bằng cách chuyển dữ liệu vào các tiêu đề, điều này có thể dẫn đến lỗi 431.

Hiểu về phần "Tiêu đề yêu cầu"

Hãy dành một chút thời gian để hiểu tiêu đề yêu cầu thực sự là gì.

Mỗi yêu cầu HTTP chứa hai phần chính:

  1. Tiêu đề: Siêu dữ liệu về yêu cầu (như cookie, xác thực và loại nội dung).
  2. Phần thân: Dữ liệu thực tế đang được gửi (đối với POST, PUT, v.v.).

Một tiêu đề yêu cầu điển hình có thể trông như thế này:

GET /api/users HTTP/1.1
Host: api.example.com
Authorization: Bearer <token>
Accept: application/json
User-Agent: Apidog/1.0

Nếu các tiêu đề này – đặc biệt là cookie hoặc các tiêu đề tùy chỉnh – trở nên quá lớn, lỗi 431 sẽ xuất hiện trước khi phần thân được đọc.

"Quá lớn" là bao nhiêu?

Không có tiêu chuẩn chung nào về giới hạn kích thước tiêu đề – nó thay đổi tùy theo phần mềm máy chủ và cấu hình:

Những giới hạn này thường là quá đủ cho việc duyệt web thông thường nhưng có thể bị vượt quá trong các kịch bản chúng ta đã thảo luận.

Kiểm thử và gỡ lỗi API với Apidog

Vì giới hạn kích thước tiêu đề khác nhau tùy theo môi trường, việc kiểm tra việc sử dụng tiêu đề của ứng dụng là rất quan trọng. Apidog là công cụ hoàn hảo cho loại công việc điều tra này.

Với Apidog, bạn có thể:

  1. Kiểm tra các tiêu đề hiện tại: Gửi một yêu cầu bình thường đến API của bạn và sử dụng Apidog để xem chính xác các tiêu đề nào đang được gửi và kích thước của chúng.
  2. Mô phỏng các tiêu đề lớn: Cố ý tạo các tiêu đề rất lớn để kiểm tra giới hạn của máy chủ. Ví dụ, tạo một mã thông báo JWT khổng lồ hoặc thêm nhiều tiêu đề tùy chỉnh lớn để xem khi nào máy chủ của bạn bắt đầu trả về lỗi 431.
  3. Xác định thủ phạm: Nếu bạn đang gặp lỗi 431 trong môi trường sản xuất, hãy sử dụng Apidog để tái tạo tập hợp tiêu đề chính xác gây ra sự cố và xác định tiêu đề cụ thể nào quá lớn.
  4. Kiểm tra các môi trường khác nhau: Kiểm tra xem máy chủ phát triển, dàn dựng và sản xuất của bạn có cùng giới hạn kích thước tiêu đề hay không bằng cách kiểm tra từng môi trường trong Apidog.
  5. Theo dõi sự phình to của tiêu đề: Tạo các kiểm thử tự động trong Apidog thường xuyên kiểm tra kích thước tiêu đề của bạn để phát hiện "sự phình to của tiêu đề" dần dần trước khi nó trở thành vấn đề.
button

Việc kiểm tra chủ động này có thể giúp bạn tránh khỏi những lỗi sản xuất bí ẩn khó tái tạo và gỡ lỗi. Khi đối phó với các vấn đề phức tạp như 431 Request Header Fields Too Large, Apidog cung cấp cho bạn khả năng hiển thị đầy đủ, giúp việc gỡ lỗi nhanh chóng, trực quan và hiệu quả.

Khi nào bạn nên lo lắng về lỗi 431 (và khi nào không)

Lỗi 431 không phải lúc nào cũng là thảm họa.

Nếu nó xảy ra thỉnh thoảng, chẳng hạn do một cookie lỗi hoặc một proxy xấu, thì đó chỉ là cơ hội để dọn dẹp các tiêu đề của bạn.

Nhưng nếu nó xảy ra thường xuyên:

Hãy coi 431 như một cảnh báo hữu ích, chứ không phải một thất bại.

Giải pháp và các phương pháp hay nhất

Đối với người dùng cuối gặp lỗi 431:

  1. Xóa Cookie của bạn: Đây là cách khắc phục hiệu quả nhất. Xóa cookie cho trang web đang gây ra lỗi.
  2. Thử một trình duyệt khác: Trình duyệt khác của bạn có thể có ít hoặc nhỏ hơn các cookie cho cùng một trang web.
  3. Sử dụng Chế độ Riêng tư/Ẩn danh: Điều này bắt đầu với một trạng thái sạch sẽ mà không có bất kỳ cookie hiện có nào.

Đối với nhà phát triển xây dựng ứng dụng:

1. Cẩn trọng với Cookie:

2. Tối ưu hóa mã thông báo xác thực:

3. Giám sát kích thước tiêu đề:

4. Cấu hình máy chủ của bạn một cách thích hợp:

431 so với các lỗi liên quan đến kích thước khác

Điều quan trọng là phải phân biệt lỗi 431 với các lỗi HTTP liên quan đến kích thước khác:

Mỗi lỗi này bảo vệ một phần khác nhau của máy chủ khỏi bị quá tải.

Kết luận: Sự cân bằng tinh tế của tiêu đề HTTP

Mã trạng thái HTTP 431 Request Header Fields Too Large thể hiện một sự cân bằng quan trọng trong kiến trúc web. Một mặt, các tiêu đề rất cần thiết cho các chức năng phong phú mà chúng ta mong đợi từ các ứng dụng web hiện đại – xác thực, cá nhân hóa, đàm phán nội dung, v.v. Mặt khác, các tiêu đề không giới hạn sẽ mở ra cánh cửa cho các lỗ hổng bảo mật và suy giảm hiệu suất.

Việc hiểu nguyên nhân gây ra lỗi 431 – thường là do cookie bị phình to hoặc mã thông báo xác thực quá lớn – giúp bạn vừa giải quyết chúng với tư cách là người dùng vừa ngăn chặn chúng với tư cách là nhà phát triển. Bằng cách lưu ý những gì bạn đưa vào tiêu đề và thường xuyên kiểm tra việc sử dụng tiêu đề của mình, bạn có thể đảm bảo các ứng dụng của mình duy trì trong giới hạn kích thước lành mạnh.

Lần tới khi bạn gặp lỗi 431, bạn sẽ biết rằng đó không phải là về nội dung bạn đang cố gửi, mà là về siêu dữ liệu vô hình đi kèm với mọi yêu cầu web. Và khi bạn đang xây dựng các ứng dụng cần quản lý tiêu đề cẩn thận, một công cụ như Apidog cung cấp khả năng hiển thị và kiểm tra mà bạn cần để giữ cho các tiêu đề của bạn sạch sẽ và các ứng dụng của bạn chạy trơn tru.

button

Thực hành thiết kế API trong Apidog

Khám phá cách dễ dàng hơn để xây dựng và sử dụng API