Bạn đang xem tài liệu về Apigee Edge.
Chuyển đến
Tài liệu về Apigee X. thông tin
Triệu chứng
Ứng dụng khách sẽ nhận được mã trạng thái HTTP 415 Unsupported Media Type kèm theo
mã lỗi protocol.http.UnsupportedEncoding làm phản hồi cho lệnh gọi API.
Thông báo lỗi
Ứng dụng sẽ nhận được mã phản hồi sau đây:
HTTP/1.1 415 Unsupported Media Type
Ngoài ra, bạn có thể nhận thấy thông báo lỗi tương tự như thông báo dưới đây:
{
"fault":{
"faultstring":"Unsupported Encoding \"UTF-8\"",
"detail":{
"errorcode":"protocol.http.UnsupportedEncoding"
}
}
}Các nguyên nhân có thể
Lỗi này xảy ra nếu giá trị của tiêu đề Content-Encoding được chỉ định trong
yêu cầu HTTP mà ứng dụng gửi đến Apigee hoặc phản hồi HTTP do máy chủ phụ trợ gửi đến
Apigee không chứa
phương thức mã hoá mà Apigee hỗ trợ, theo thông số kỹ thuật
RFC 7231, mục 6.5.13: 415 Loại nội dung nghe nhìn không được hỗ trợ.
Sau đây là các nguyên nhân có thể gây ra lỗi này:
| Nguyên nhân | Mô tả | Hướng dẫn khắc phục sự cố áp dụng cho |
|---|---|---|
| Sử dụng phương thức mã hoá không được hỗ trợ trong yêu cầu | Tiêu đề của yêu cầu Content-Encoding có chứa phương thức mã hoá không được hỗ trợ
của Apigee Edge. |
Người dùng Edge công khai và riêng tư |
| Sử dụng phương thức mã hoá không được hỗ trợ để phản hồi | Tiêu đề phản hồi Content-Encoding của máy chủ phụ trợ có chứa phương thức mã hoá
Không được Apigee Edge hỗ trợ. |
Người dùng Edge công khai và riêng tư |
Các bước chẩn đoán phổ biến
Để chẩn đoán lỗi, bạn có thể sử dụng một trong những phương pháp sau:
Giám sát API
Cách chẩn đoán lỗi bằng tính năng Giám sát API:
- Đăng nhập vào tài khoản Apigee Edge.
Chuyển sang tổ chức mà bạn muốn điều tra vấn đề:
- Chuyển đến thẻ Analyze (Phân tích) > Giám sát API > Điều tra.
- Chọn khung thời gian cụ thể mà bạn phát hiện thấy lỗi.
- Đảm bảo rằng bộ lọc Proxy được đặt thành Tất cả.
- Vẽ Mã lỗi theo Thời gian.
Chọn một ô có mã lỗi
protocol.http.UnsupportedEncodingnhư hình bên dưới:
Thông tin về mã lỗi
protocol.http.UnsupportedEncodingđược hiển thị như sau:
Nhấp vào Xem nhật ký và mở rộng một trong những yêu cầu không thành công với
415lỗi để xem thêm thông tin:
- Từ cửa sổ Logs (Nhật ký), hãy lưu ý những thông tin chi tiết sau:
- Nguồn lỗi: Cột này cho biết lỗi do
apigeetrả về hoặctarget. - Mã lỗi: Mã này phải khớp với
protocol.http.UnsupportedEncoding.
- Nguồn lỗi: Cột này cho biết lỗi do
- Nếu Nguồn lỗi là
apigee, thì điều đó cho biết rằng yêu cầu có chứa chế độ mã hoá không được hỗ trợ trong tiêu đềContent-Encoding. - Nếu Nguồn lỗi là
target, thì điều đó cho biết rằng máy chủ phụ trợ phản hồi chứa mã hóa không được hỗ trợ trong tiêu đềContent-Encoding.
Công cụ theo dõi
Cách chẩn đoán lỗi bằng công cụ Theo dõi:
- Bật
theo dõi phiên hoạt động và:
- Chờ lỗi
415 Unsupported Media Typexảy ra, hoặc - Nếu bạn có thể tái hiện vấn đề, hãy thực hiện lệnh gọi API để tái hiện
415 Unsupported Media Typelỗi.
- Chờ lỗi
Đảm bảo rằng bạn đã bật tuỳ chọn Show all FlowInfos (Hiện tất cả FlowInfos):
- Chọn một trong các yêu cầu không thành công rồi kiểm tra dấu vết.
- Di chuyển qua các giai đoạn của quá trình theo dõi và xác định nơi xảy ra lỗi.
Thông thường, bạn sẽ thấy lỗi này trong một luồng sau khi Yêu cầu được gửi đến mục tiêu máy chủ như minh hoạ dưới đây:
Ghi lại giá trị của lỗi trong dấu vết.
Dấu vết mẫu ở trên cho thấy lỗi là
Unsupported Encoding "utf-8". Từ lỗi do Apigee đưa ra sau khi yêu cầu được gửi đến máy chủ phụ trợ. Điều này cho biết rằng máy chủ phụ trợ đã gửi tiêu đề phản hồiContent-Encodingkèm theo giá trị của"utf-8", đây không phải là phương thức mã hoá được hỗ trợ trong Apigee.- Chuyển đến Giai đoạn AX (Đã ghi dữ liệu Analytics) trong dấu vết và nhấp vào đó.
Cuộn xuống phần Tiêu đề lỗi / phản hồi trong Chi tiết giai đoạn bảng điều khiển và xác định các giá trị của X-Apigee-fault-code và X-Apigee-fault-source như sau:
Bạn sẽ thấy các giá trị của X-Apigee-fault-code và X-Apigee-fault-source là
protocol.http.UnsupportedEncodingvàtarget, cho biết rằng do giá trị mã hoá không được hỗ trợ của"utf-8"đã được truyền bởi giá trị máy chủ phụ trợ trong tiêu đề phản hồiContent-Encoding.Tiêu đề phản hồi Giá trị X-Apigee-fault-code protocol.http.UnsupportedEncodingX-Apigee-fault-source target- Kiểm tra xem bạn có đang sử dụng
tạo chuỗi proxy; tức là nếu máy chủ mục tiêu/điểm cuối mục tiêu gọi một
proxy trong Apigee.
Để xác định điều này, hãy quay lại giai đoạn Đã gửi yêu cầu đến máy chủ mục tiêu. Nhấp vào Hiển thị cuộn tròn.
- Cửa sổ Curl for Yêu cầu được gửi tới máy chủ mục tiêu sẽ mở ra để từ đó bạn có thể xác định bí danh máy chủ lưu trữ của máy chủ mục tiêu.
- Nếu bí danh máy chủ lưu trữ của máy chủ mục tiêu đang trỏ tới bí danh máy chủ lưu trữ ảo, thì đó là proxy
tạo chuỗi. Trong trường hợp này, bạn cần phải lặp lại tất cả các bước trên cho proxy theo chuỗi cho đến khi
bạn sẽ xác định nguyên nhân thực sự gây ra lỗi
415 Unsupported Media Type. - Nếu bí danh máy chủ lưu trữ của máy chủ mục tiêu trỏ đến máy chủ phụ trợ của bạn, thì điều đó cho biết rằng máy chủ phụ trợ của bạn đang truyền mã hoá không được hỗ trợ đến Apigee.
Nhật ký truy cập Nginix
Cách chẩn đoán lỗi bằng nhật ký truy cập NGINX:
- Nếu là người dùng Đám mây riêng tư, bạn có thể sử dụng nhật ký truy cập NGINX để xác định
thông tin quan trọng về lỗi HTTP
415. Kiểm tra nhật ký truy cập NGINX:
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log- Tìm kiếm mọi Lỗi
415trong một khoảng thời gian cụ thể (nếu sự cố đã xảy ra trước đây) hoặc nếu có bất kỳ yêu cầu nào vẫn không thành công với415. Nếu bạn tìm thấy lỗi
415khi so khớp X-Apigee-fault-code giá trị củaprotocol.http.UnsupportedEncoding, sau đó xác định giá trị của X-Apigee-fault-source.Lỗi 415 mẫu trong nhật ký truy cập NGINX:
Mục nhập mẫu ở trên từ nhật ký truy cập NGINX có các giá trị sau cho X- Apigee-fault-code và X-Apigee-fault-source:
Tiêu đề phản hồi Giá trị X-Apigee-fault-code protocol.http.Response405WithoutAllowHeaderX-Apigee-fault-source MPX-Apigee-fault-source cũng có thể cóX-Apigee-fault-source giá trịX-Apigee-fault-source
Nguyên nhân: Phương thức mã hoá không được hỗ trợ trong yêu cầu
Chẩn đoán
- Xác định Mã lỗi và Nguồn lỗi cho lỗi phát hiện được bằng API Giám sát hoặc nhật ký truy cập NGINX như được giải thích trong Các bước chẩn đoán phổ biến.
- Nếu Mã lỗi là
protocol.http.UnsupportedEncodingvà Lỗi Nguồn có giá trịapigeehoặcMP, thì điều này cho biết rằng yêu cầu do ứng dụng gửi chứa phương thức mã hoá không được hỗ trợ trong tiêu đề yêu cầuContent-Encoding. - Bạn có thể xác định giá trị của phương thức mã hoá không được hỗ trợ được truyền trong yêu cầu HTTP
bằng một trong các phương pháp sau:
Thông báo lỗi
Sử dụng thông báo lỗi:Nếu bạn có thể xem thông báo lỗi đầy đủ mà Apigee Edge gửi đến, hãy tham khảo vào
faultstring.faultstringchứa giá trị của thuộc tính không được hỗ trợ mã kết thúc.Thông báo lỗi mẫu:
"faultstring":"Unsupported Encoding \"UTF-8\""
Trong thông báo lỗi ở trên, hãy lưu ý rằng giá trị của kiểu mã hoá không được hỗ trợ là
“UTF-8”như được thấy trongfaultstring.Vì
“UTF-8”không phải là phương thức mã hoá được hỗ trợ trong Apigee Edge, nên yêu cầu này không thành công với lỗi415 Unsupported Media Typevới mã lỗi:protocol.http.UnsupportedEncoding.
Yêu cầu thực tế
Sử dụng yêu cầu thực tế:- Nếu bạn không có quyền truy cập vào yêu cầu thực tế do ứng dụng đưa ra, hãy chuyển đến Độ phân giải.
- Nếu bạn có quyền truy cập vào yêu cầu thực tế do ứng dụng đưa ra, hãy thực hiện
các bước sau:
- Xác định giá trị được truyền đến tiêu đề của yêu cầu
Content-Encoding. - Nếu giá trị được truyền đến tiêu đề của yêu cầu
Content-Encodingkhông phải là một của các giá trị được liệt kê trong phần Mã hóa được hỗ trợ, thì đó là nguyên nhân gây ra lỗi này.Yêu cầu mẫu:
curl -v "https://HOSTALIAS/v1/testgzip" -H "Content-Encoding: UTF-8" -X POST -d @request_payload.gz
Yêu cầu mẫu ở trên gửi giá trị
"UTF-8"đến tiêu đềContent- Encoding. Tiêu đề này không phải là Phương thức mã hoá được hỗ trợ trong Apigee Edge. Do đó, yêu cầu này không thành công với lỗi415 Unsupported Media Typekèm theo mã lỗi:protocol.http.UnsupportedEncoding
- Xác định giá trị được truyền đến tiêu đề của yêu cầu
Độ phân giải
- Bạn có thể tham khảo danh sách mã hoá mà Apigee hỗ trợ trong Chế độ mã hoá được hỗ trợ.
- Hãy đảm bảo rằng ứng dụng luôn gửi các thông tin sau:
- Chỉ phương thức mã hoá được hỗ trợ mới là giá trị cho tiêu đề
Content-Encodingtrong yêu cầu - Tải trọng yêu cầu ở định dạng được hỗ trợ sang Apigee Edge và khớp với định dạng
đã chỉ định trong tiêu đề
Content-Encoding
- Chỉ phương thức mã hoá được hỗ trợ mới là giá trị cho tiêu đề
Trong ví dụ trên, tải trọng yêu cầu có phần mở rộng
gzcho biết nội dung phảigzip. Bạn có thể khắc phục vấn đề này bằng cách gửi tiêu đề của yêu cầu dưới dạngContent-Encoding: gzipvà tải trọng yêu cầu ở định dạnggzip:curl -v "https://HOSTALIAS/v1/testgzip" -H "Content-Encoding: gzip" -X POST -d @request_payload.gz
Nguyên nhân: Phương thức mã hoá không được hỗ trợ trong phản hồi
Chẩn đoán
- Xác định Mã lỗi và Nguồn lỗi cho lỗi phát hiện được bằng API Nhật ký giám sát, Công cụ theo dõi hoặc nhật ký truy cập NGINX như giải thích trong Các bước chẩn đoán thường gặp.
- Nếu Nguồn lỗi có giá trị
target, thì điều này cho biết rằng phản hồi do máy chủ phụ trợ gửi có chứa phương thức mã hoá không được hỗ trợ trong Tiêu đềContent-Encoding. - Bạn có thể xác định giá trị của phương thức mã hoá không được hỗ trợ được truyền trong phản hồi HTTP từ
máy chủ phụ trợ bằng một trong các phương thức sau:
Thông báo lỗi
Sử dụng thông báo lỗi:Nếu bạn có quyền xem thông báo lỗi hoàn chỉnh nhận được từ Apigee Edge, thì tham khảo
faultstring.faultstringchứa giá trị của mã hoá không được hỗ trợ.Thông báo lỗi mẫu:
"faultstring":"Unsupported Encoding \"UTF-8\""
-
Trong thông báo lỗi ở trên, hãy lưu ý rằng giá trị của kiểu mã hoá không được hỗ trợ là
“UTF-8”như được thấy trongfaultstring.Vì
“UTF-8”không phải là phương thức mã hoá được hỗ trợ trong Apigee Edge, nên mã này yêu cầu không thành công với415 Unsupported Media Typelỗi cùng với mã lỗi:protocol.http.UnsupportedEncoding.
Công cụ theo dõi
Sử dụng công cụ Theo dõi:- Nếu bạn không có dấu vết của yêu cầu không thành công, hãy truy cập Độ phân giải.
- Nếu đã ghi lại dấu vết lỗi, bạn có thể xác định các lỗi
mã hoá do máy chủ phụ trợ truyền như một phần của phản hồi
Content-Encodingnhư được giải thích trong công cụ Theo dõi.
Độ phân giải
- Bạn có thể tham khảo danh sách mã hoá mà Apigee hỗ trợ trong Phương thức mã hoá được hỗ trợ
- Đảm bảo rằng máy chủ phụ trợ luôn gửi nội dung sau:
- Chỉ phương thức mã hoá được hỗ trợ làm giá trị cho thuộc tính
Tiêu đề
Content-Encodingtrong yêu cầu - Tải trọng phản hồi ở định dạng được hỗ trợ đến Apigee Edge và khớp với định dạng
đã chỉ định trong tiêu đề
Content-Encoding
- Chỉ phương thức mã hoá được hỗ trợ làm giá trị cho thuộc tính
Tiêu đề
Phương thức mã hoá được hỗ trợ
Bảng sau đây liệt kê định dạng mã hoá mà Apigee Edge hỗ trợ:
| Tiêu đề | Mã hoá | Mô tả |
|---|---|---|
Content-Encoding |
gzip |
Định dạng gzip của Unix |
deflate |
Định dạng này sử dụng cấu trúc zlib với thuật toán nén giảm bớt. |
Thông số kỹ thuật
Apigee phản hồi bằng phản hồi lỗi 415 Unsupported Media Type theo
thông số RFC sau đây:
| Thông số kỹ thuật |
|---|
| RFC 7231, mục 6.5.13: 415 Loại nội dung nghe nhìn không được hỗ trợ |
Các điểm chính cần lưu ý
Xin lưu ý những điều sau:
- Nếu Apigee trả về lỗi
415do phương thức mã hoá không được hỗ trợ được truyền vào tiêu đềContent-Encodingnhư một phần của yêu cầu API, sau đó:- Bạn sẽ không thể ghi lại dấu vết cho các yêu cầu như vậy.
-
Bạn sẽ không thể sửa đổi định dạng hoặc nội dung của phản hồi lỗi được gửi bởi Apigee Edge bằng các chính sách như RaiseFault, assignedMessage.
Điều này là do lỗi này xảy ra ở giai đoạn đầu trong Trình xử lý thông báo trước khi thực thi được chính sách.
- Nếu Apigee trả về lỗi
415do phương thức mã hoá không được hỗ trợ thì truyền trong tiêu đề phản hồi từ máy chủ phụ trợ, thì bạn phải khắc phục vấn đề này trong máy chủ phụ trợ để tránh lỗi này. Vui lòng làm việc với nhóm phụ trợ của bạn khi thích hợp để khắc phục sự cố này.
Nếu bạn vẫn cần trợ giúp từ Bộ phận hỗ trợ Apigee Edge, hãy chuyển đến mục Phải thu thập thông tin chẩn đoán.
Phải thu thập thông tin chẩn đoán
Nếu bạn vẫn cần hỗ trợ từ Nhóm hỗ trợ Apigee, hãy thu thập những thông tin sau thông tin chẩn đoán rồi liên hệ với Bộ phận hỗ trợ Apigee Edge:
Nếu bạn là người dùng Cloud Public, hãy cung cấp những thông tin sau:
- Tên tổ chức
- Tên môi trường
- Tên proxy API
- Hoàn tất lệnh
curldùng để tái hiện lỗi415 - Tệp theo dõi cho các yêu cầu API
Nếu bạn là người dùng Đám mây riêng tư, hãy cung cấp các thông tin sau:
- Đã nhận thấy thông báo lỗi hoàn chỉnh đối với các yêu cầu không thực hiện được
- Tên môi trường
- Gói Proxy API
- Tệp theo dõi cho các yêu cầu API
Nhật ký truy cập NGINX
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_logVị trí: ORG, ENV và PORT# được thay thế bằng giá trị thực tế.
- Nhật ký hệ thống của Trình xử lý thư
/opt/apigee/var/log/edge-message- processor/logs/system.log