Khi các yêu cầu API được thực hiện thông qua Apigee Edge, Bộ định tuyến thành phần và Bộ xử lý thư của Apigee Edge, hoặc các máy chủ phụ trợ
có thể trả về lỗi cho ứng dụng.
Lỗi từ Trình xử lý thư
Bộ xử lý tin nhắn là thành phần cốt lõi của Apigee Edge, giúp xử lý các chính sách và tương tác với các máy chủ phụ trợ. Phương thức này có thể trả về lỗi nếu phát hiện thấy bất kỳ vấn đề nào như:
Vấn đề về kết nối mạng, lỗi bắt tay TLS, không sử dụng được máy chủ phụ trợ, thiếu phản hồi trong khi giao tiếp với máy chủ phụ trợ
Lỗi trong quá trình thực thi chính sách
Tiêu đề HTTP, phương thức mã hoá, đường dẫn không hợp lệ, không tuân thủ thông số kỹ thuật HTTP, vượt quá giới hạn sản phẩm, v.v.:
Với yêu cầu HTTP do các ứng dụng khách gửi
HOẶC
Có phản hồi HTTP do máy chủ phụ trợ gửi
Và nhiều nội dung khác nữa
Lỗi mẫu từ Trình xử lý thư
Bộ xử lý thông báo luôn trả về một mã trạng thái HTTP, theo sau là một thông báo lỗi cùng với một mã lỗi ở định dạng JSON như minh hoạ dưới đây:
Ứng dụng sẽ nhận được mã phản hồi như ví dụ sau:
HTTP/1.1 414 Request-URI Too Long
Phản hồi lỗi từ Bộ xử lý thư sẽ xuất hiện ở định dạng sau:
Chứa thông báo lỗi mô tả nguyên nhân có thể gây ra lỗi
errorcode
Mã lỗi (còn gọi là mã lỗi) liên quan đến lỗi đó
Danh mục lỗi thời gian chạy
Danh mục lỗi này cung cấp tất cả thông tin mà bạn cần biết về mã lỗi thời gian chạy (đối với các lỗi không phải lỗi chính sách) mà thành phần Bộ xử lý thông báo Apigee Edge trả về. Nó bao gồm các thông tin sau cho từng mã lỗi:
Mã trạng thái HTTP
Thông báo lỗi
Các nguyên nhân có thể gây ra lỗi
Mọi thông số kỹ thuật HTTP và/hoặc giới hạn sản phẩm được liên kết
Cẩm nang và video hướng dẫn cách chẩn đoán nguyên nhân lỗi và các giải pháp hiệu quả mà bạn có thể áp dụng để tự khắc phục lỗi (nếu có)
Khắc phục mà bạn có thể áp dụng để tự khắc phục lỗi
Sử dụng hộp Tìm kiếm bên dưới để lọc bảng nhằm hiển thị thông tin trên
cho một mã lỗi cụ thể. Bạn có thể tìm kiếm mã trạng thái hoặc nội dung bất kỳ trong bất kỳ trường nào trong bảng.
searchTìm kiếm
Mã lỗi
Nội dung mô tả
Khắc phục
flow.*
flow.APITimedOut
Mã trạng thái HTTP:
504 Gateway Timeout
Thông báo lỗi:
API timed out
Nguyên nhân có thể là do:
Lỗi này xảy ra nếu:
Máy chủ phụ trợ không phản hồi lại trong khoảng thời gian chờ do thuộc tính api.timeout định cấu hình cho Proxy API cụ thể.
Một chính sách mất nhiều thời gian do các thao tác tính toán tốn nhiều thời gian, tải trọng cao hoặc hiệu suất kém.
Lưu ý: Cẩm nang này cung cấp hướng dẫn khắc phục sự cố với mã lỗi messaging.adaptors.http.flow.GatewayTimeout. Tuy nhiên, bạn có thể sử dụng cùng một cẩm nang để khắc phục sự cố đối với mã lỗi flow.APITimedOut.
Phương thức mã hoá được chỉ định trong tiêu đề phản hồi HTTP Content-Encoding của máy chủ phụ trợ/máy chủ đích là hợp lệ và
được Apigee Edge hỗ trợ,
NHƯNG
Định dạng tải trọng do máy chủ phụ trợ/máy chủ đích gửi trong phản hồi HTTP không khớp với định dạng mã hoá được chỉ định trong tiêu đề Content-Encoding
Thông báo lỗi và định dạng có thể thay đổi tuỳ thuộc vào cách triển khai máy chủ phụ trợ.
Nguyên nhân có thể là do:
Lỗi này xảy ra nếu máy chủ phụ trợ phản hồi bằng mã trạng thái 504 tới Apigee Edge.
Lưu ý: Mã lỗi messaging.adaptors.http.flow.ErrorResponseCode không được trả về trong thông báo lỗi được gửi đến các ứng dụng. Nguyên nhân là do mã lỗi này được Apigee Edge đặt bất cứ khi nào máy chủ phụ trợ phản hồi bằng lỗi và bất kỳ mã trạng thái 4XX hoặc 5XX nào. Bạn có thể xem mã lỗi này trong tính năng Giám sát API, nhật ký truy cập NGINX hoặc cơ sở dữ liệu phân tích.
messaging.adaptors.http.flow.GatewayTimeout
Mã trạng thái HTTP:
504 Gateway Timeout
Thông báo lỗi:
Gateway Timeout
Nguyên nhân có thể là do:
Lỗi này xảy ra nếu máy chủ phụ trợ không phản hồi lại Trình xử lý thông báo Apigee Edge trong
khoảng thời gian chờ I/O được định cấu hình trên Trình xử lý thông báo.
Lỗi này xảy ra khi ứng dụng khách không chuyển tiêu đề Content-Length qua các yêu cầu HTTP POST và PUT được gửi đến Apigee Edge.
Lưu ý: Bạn không thể ghi lại các yêu cầu không thành công do lỗi này trong Công cụ theo dõi vì Trình xử lý thông báo thực hiện việc xác thực này ở giai đoạn rất sớm, trước khi xử lý yêu cầu và thực thi bất kỳ chính sách nào trong Proxy API.
Lỗi này xảy ra nếu Trình xử lý thông báo Apigee không nhận được tải trọng yêu cầu từ ứng dụng khách trong
khoảng thời gian chờ I/O được định cấu hình trên thành phần Trình xử lý thông báo.
Khắc phục
Đảm bảo rằng ứng dụng khách gửi tải trọng yêu cầu trong
khoảng thời gian chờ I/O được định cấu hình trên thành phần Trình xử lý tin nhắn của Apigee Edge.
messaging.adaptors.http.flow.ServiceUnavailable
Mã trạng thái HTTP:
503 Service Unavailable
Thông báo lỗi:
The Service is temporarily unavailable
Nguyên nhân có thể là do:
Lỗi này xảy ra trong một trong các trường hợp sau:
Việc máy chủ uỷ quyền tuỳ chỉnh phân giải không chính xác DNS của máy chủ phụ trợ do máy chủ uỷ quyền tuỳ chỉnh thực hiện đã dẫn đến việc địa chỉ IP không hợp lệ dẫn đến lỗi kết nối.
Lỗi hết thời gian kết nối do:
Việc hạn chế tường lửa trên máy chủ phụ trợ ngăn quá trình Apigee kết nối với máy chủ phụ trợ.
Các vấn đề về kết nối mạng giữa Apigee Edge và máy chủ phụ trợ.
Máy chủ lưu trữ máy chủ đích được chỉ định trong Điểm cuối mục tiêu không chính xác hoặc có các ký tự không mong muốn (chẳng hạn như dấu cách).
Lỗi này xảy ra nếu Apigee Edge không thể định tuyến yêu cầu đến bất kỳ TargetEndpoints nào vì:
Không có điều kiện quy tắc định tuyến nào (<RouteRule>) khớp với yêu cầu trong một proxy
VÀ
Không có quy tắc định tuyến mặc định nào được xác định trong ProxyEndpoint (tức là <RouteRule> không có điều kiện nào)
Khắc phục
Để xử lý lỗi này, hãy làm theo các hướng dẫn sau:
Xem lại các quy tắc định tuyến được xác định trong ProxyEndpoint và sửa đổi để đảm bảo rằng có ít nhất một điều kiện của quy tắc tuyến khớp với yêu cầu của bạn.
Bạn nên xác định quy tắc tuyến đường mặc định không có điều kiện khi bạn có nhiều Quy tắc định tuyến.
Đảm bảo rằng quy tắc định tuyến mặc định luôn được xác định cuối cùng trong danh sách Tuyến có điều kiện vì các quy tắc được đánh giá từ trên xuống trong ProxyEndpoint.
Để tìm hiểu thêm về cách xác định các điều kiện <RouteRule> trong ProxyEndpoint, hãy xem phần
Mục tiêu có điều kiện.
messaging.runtime.SenseRaiseFault
Mã trạng thái HTTP:
403 Forbidden
Thông báo lỗi:
Sense Fault
Nguyên nhân có thể là do:
Lỗi này xảy ra nếu yêu cầu API được gửi từ một địa chỉ IP cụ thể của ứng dụng khách. Địa chỉ này bị chặn theo quy tắc Apigee Sense.
Nếu địa chỉ IP của ứng dụng cụ thể không bị chặn nhưng bạn vẫn gặp lỗi này, hãy liên hệ với Apigee Edge Support.
protocol.http.* - Caused due to bad request
protocol.http.BadFormData
Mã trạng thái HTTP:
500 Internal Server Error
Thông báo lỗi:
Bad Form Data
Nguyên nhân có thể là do:
Lỗi này xảy ra khi và chỉ khi tất cả các điều kiện sau được đáp ứng:
Yêu cầu HTTP do khách hàng gửi tới Apigee Edge có chứa:
Content-Type: application/x-www-form-urlencoded,
và
Dữ liệu biểu mẫu có ký hiệu phần trăm (%) hoặc ký hiệu phần trăm (%) theo sau là các ký tự hệ thập lục phân không hợp lệ không được cho phép theo
Biểu mẫu – Mục 17.13.4.1.
Proxy API trong Apigee Edge sẽ đọc các tham số dạng cụ thể có chứa bất kỳ ký tự nào không được phép bằng cách sử dụng
ExtractVariables hoặc chính sách ConfigureMessage trong quy trình yêu cầu.
Lỗi này xảy ra nếu một tiêu đề HTTP cụ thể không được phép trùng lặp trong Apigee Edge, xuất hiện nhiều lần với các giá trị giống nhau hoặc khác nhau trong yêu cầu HTTP do ứng dụng khách gửi đến Apigee Edge.
Header {header_name} contains invalid character {character}
Nguyên nhân có thể là do:
Lỗi này xảy ra nếu tên tiêu đề được gửi trong yêu cầu HTTP mà ứng dụng khách đến Apigee Edge chứa các ký tự không hợp lệ, chẳng hạn như ký tự bằng (=), dấu phẩy (,), dấu chấm phẩy (;), thẻ, ký tự CRLF và ký tự Dòng mới.
Lỗi này xảy ra nếu đường dẫn trong URL yêu cầu HTTP do ứng dụng khách gửi đến Apigee Edge có chứa các ký tự không được phép theo quy cách RFC 3986, mục 3.3: Đường dẫn.
Đảm bảo rằng đường dẫn trong URL yêu cầu HTTP mà ứng dụng khách gửi đến Apigee Edge không chứa ký tự nào không được phép theo
RFC 3986, mục 3.3: Đường dẫn.
protocol.http.TooBigBody
Mã trạng thái HTTP:
413 Request Entity Too Large
Thông báo lỗi:
Body buffer overflow
Nguyên nhân có thể là do:
Lỗi này xảy ra nếu kích thước tải trọng mà ứng dụng khách gửi qua yêu cầu HTTP tới Apigee Edge lớn hơn giới hạn cho phép trong Apigee Edge.
Lỗi này xảy ra nếu URL yêu cầu của máy chủ phụ trợ (được biểu thị bằng biến luồng target.url) chứa một đường dẫn bắt đầu bằng dấu chấm hỏi (?) thay vì dấu gạch chéo lên (/). Đường dẫn này không hợp lệ.
Lỗi này xảy ra nếu tiêu đề HTTP cụ thể không được phép trùng lặp trong Apigee Edge, xuất hiện nhiều lần với các giá trị giống nhau hoặc khác nhau trong phản hồi HTTP do máy chủ phụ trợ gửi tới Apigee Edge.
Header {header_name} contains invalid character {character}
Nguyên nhân có thể là do:
Lỗi này xảy ra nếu tên tiêu đề do máy chủ phụ trợ gửi dưới dạng một phần của phản hồi HTTP chứa các ký tự không hợp lệ như ký tự bằng (=), dấu phẩy (,), dấu chấm phẩy (;), thẻ, ký tự CRLF và ký tự Dòng mới.
Proxy refused to create tunnel with response status {status code}
Nguyên nhân có thể là do:
Lỗi này xảy ra trong quá trình tạo đường hầm giữa Apigee Edge và máy chủ phụ trợ do máy chủ proxy gây ra do tường lửa, ACL (Danh sách kiểm soát truy cập), sự cố DNS, khả năng đáp ứng khả năng sử dụng của máy chủ phụ trợ, v.v.
Lưu ý:Mã trạng thái trong thông báo lỗi (faultstring) cho biết nguyên nhân cấp cao của vấn đề.
Response Status code 306 is reserved, so can't be used.
Nguyên nhân có thể là do:
Lỗi này xảy ra nếu máy chủ phụ trợ phản hồi bằng mã trạng thái 306 cho Apigee Edge.
Mã trạng thái 306 được xác định trong phiên bản trước của thông số kỹ thuật HTTP. Theo thông số kỹ thuật HTTP hiện tại, mã này đã được dành riêng và không được sử dụng.
Lỗi này xảy ra nếu phản hồi HTTP từ máy chủ phụ trợ cho Apigee Edge là 204 No Content hoặc 205 Reset Content nhưng có chứa nội dung phản hồi và/hoặc một hoặc nhiều tiêu đề sau đây:
Lỗi này xảy ra nếu tổng kích thước của tất cả tiêu đề phản hồi do máy chủ phụ trợ gửi trong phản hồi HTTP tới Apigee Edge lớn hơn giới hạn cho phép trong Apigee Edge.
Lỗi này xảy ra nếu kích thước của dòng phản hồi do máy chủ phụ trợ gửi trong phản hồi HTTP tới Apigee Edge lớn hơn giới hạn cho phép trong Apigee Edge.
Lỗi này xảy ra nếu tiêu đề Content-Encoding do máy chủ phụ trợ gửi đi trong phản hồi HTTP chứa định dạng mã hoá/tải trọng không được
Apigee Edge hỗ trợ.
KeyAlias {KeyAlias_name} is not found in
Keystore {Keystore_Name}
Nguyên nhân có thể là do:
Lỗi này xảy ra nếu không tìm thấy KeyAlias cụ thể được tham chiếu trong TargetEndpoint hoặc TargetServer trong Kho khoá cụ thể.
Khắc phục
Đảm bảo rằng KeyAlias được chỉ định trong TargetEndpoint hoặc TargetServer tồn tại và là một phần của Kho khoá cụ thể.
security.util.TrustStoreWithNoCertificates
Mã trạng thái HTTP:
500 Internal Server Error
Thông báo lỗi:
TrustStore {truststore_name} has no certificates
Nguyên nhân có thể là do:
Lỗi này xảy ra nếu một Truststore cụ thể được tham chiếu trong TargetEndpoint hoặc TargetServer không chứa chứng chỉ nào.
Khắc phục
Nếu bạn muốn xác thực chứng chỉ của máy chủ phụ trợ và muốn sử dụng Truststore trong TargetEndpoint hoặc TargetServer, hãy đảm bảo rằng Truststore chứa các chứng chỉ hợp lệ của máy chủ phụ trợ.