คุณกำลังดูเอกสารประกอบ Apigee Edge
ไปที่
เอกสารประกอบเกี่ยวกับ Apigee X. ข้อมูล
ลักษณะปัญหา
แอปพลิเคชันไคลเอ็นต์ได้รับรหัสสถานะ HTTP 415 Unsupported Media Type
ด้วย
protocol.http.UnsupportedEncoding
เป็นการตอบกลับการเรียก API
ข้อความแสดงข้อผิดพลาด
แอปพลิเคชันไคลเอ็นต์ได้รับโค้ดตอบกลับต่อไปนี้
HTTP/1.1 415 Unsupported Media Type
นอกจากนี้ คุณอาจสังเกตเห็นข้อความแสดงข้อผิดพลาดที่คล้ายกับข้อความด้านล่าง:
{ "fault":{ "faultstring":"Unsupported Encoding \"UTF-8\"", "detail":{ "errorcode":"protocol.http.UnsupportedEncoding" } } }
สาเหตุที่เป็นไปได้
ข้อผิดพลาดนี้เกิดขึ้นหากค่าของส่วนหัว Content-Encoding
ที่ระบุไว้ใน
คำขอ HTTP ที่ไคลเอ็นต์ส่งไปยัง Apigee หรือการตอบกลับ HTTP ที่เซิร์ฟเวอร์แบ็กเอนด์ส่งเพื่อ
Apigee ไม่มีส่วน
การเข้ารหัสที่รองรับโดย Apigee ตามข้อกำหนด
RFC 7231 ส่วน 6.5.13: 415 ประเภทสื่อที่ไม่รองรับ
สาเหตุที่เป็นไปได้สำหรับข้อผิดพลาดนี้มีดังนี้
สาเหตุ | คำอธิบาย | วิธีการแก้ปัญหาสำหรับ |
---|---|---|
มีการใช้การเข้ารหัสที่ไม่รองรับในคำขอ | ส่วนหัวของคำขอ Content-Encoding มีการเข้ารหัสที่ไม่รองรับ
โดย Apigee Edge |
ผู้ใช้ Edge สาธารณะและ Private Cloud |
ใช้การเข้ารหัสที่ไม่รองรับในการตอบกลับ | ส่วนหัวการตอบกลับของเซิร์ฟเวอร์แบ็กเอนด์ Content-Encoding มีการเข้ารหัสที่
Apigee Edge ไม่รองรับ |
ผู้ใช้ Edge สาธารณะและ Private Cloud |
ขั้นตอนการวินิจฉัยทั่วไป
หากต้องการวินิจฉัยข้อผิดพลาด คุณสามารถใช้วิธีการใดก็ได้ต่อไปนี้
การตรวจสอบ API
วิธีวินิจฉัยข้อผิดพลาดโดยใช้การตรวจสอบ API
- ลงชื่อเข้าใช้บัญชี Apigee Edge
สลับไปยังองค์กรที่ต้องการตรวจสอบปัญหา
- ไปที่ วิเคราะห์ > การตรวจสอบ API > หน้าตรวจสอบ
- เลือกกรอบเวลาที่คุณพบข้อผิดพลาด
- ตรวจสอบว่าได้ตั้งค่าตัวกรองพร็อกซีเป็นทั้งหมดแล้ว
- พล็อตรหัสข้อผิดพลาดเทียบกับเวลา
เลือกเซลล์ที่มีรหัสข้อผิดพลาด
protocol.http.UnsupportedEncoding
ดังที่แสดงด้านล่างข้อมูลเกี่ยวกับรหัสข้อผิดพลาด
protocol.http.UnsupportedEncoding
แสดงอยู่ด้านล่างคลิกดูบันทึก และขยายคำขอที่ดำเนินการไม่สำเร็จด้วย
415
เกิดข้อผิดพลาดในการดูข้อมูลเพิ่มเติม:- จากหน้าต่าง Logs ให้จดรายละเอียดต่อไปนี้
- แหล่งที่มาของข้อผิดพลาด: ข้อความนี้จะแสดงว่า
apigee
แสดงผลข้อผิดพลาด หรือtarget
- Fault Code: ควรตรงกับ
protocol.http.UnsupportedEncoding
- แหล่งที่มาของข้อผิดพลาด: ข้อความนี้จะแสดงว่า
- หากแหล่งที่มาของข้อผิดพลาดคือ
apigee
ก็แสดงว่าคำขอ มีการเข้ารหัสที่ไม่รองรับในส่วนหัวContent-Encoding
- หากแหล่งที่มาของข้อผิดพลาดคือ
target
แสดงว่าเซิร์ฟเวอร์แบ็กเอนด์ การตอบกลับมีการเข้ารหัสที่ไม่รองรับในส่วนหัวContent-Encoding
เครื่องมือการติดตาม
วิธีวินิจฉัยข้อผิดพลาดโดยใช้เครื่องมือติดตาม
- เปิดใช้งาน
เซสชันการติดตาม และดำเนินการอย่างใดอย่างหนึ่งต่อไปนี้
- รอให้ข้อผิดพลาด
415 Unsupported Media Type
เกิดขึ้น หรือ - หากคุณทำให้เกิดปัญหาซ้ำได้ โปรดเรียกใช้ API เพื่อจำลองปัญหา
ข้อผิดพลาด
415 Unsupported Media Type
รายการ
- รอให้ข้อผิดพลาด
ตรวจสอบว่าเปิดใช้แสดง FlowInfo ทั้งหมดแล้ว
- เลือกคำขอที่ไม่สำเร็จรายการหนึ่งและตรวจสอบการติดตาม
- ดำเนินการตามขั้นตอนต่างๆ ของการติดตามและค้นหาตำแหน่งที่เกิดข้อผิดพลาด
โดยปกติแล้ว คุณจะเห็นข้อผิดพลาดในขั้นตอนหลังจากที่ระบบส่งคำขอไปยังเป้าหมายแล้ว เซิร์ฟเวอร์ตามที่แสดงด้านล่าง
จดค่าของข้อผิดพลาดจากการติดตาม
การติดตามตัวอย่างด้านบนแสดงข้อผิดพลาดเป็น
Unsupported Encoding "utf-8"
ตั้งแต่ปี Apigee คือข้อผิดพลาดที่เพิ่มขึ้นหลังจากที่ส่งคำขอไปยังเซิร์ฟเวอร์แบ็กเอนด์และระบุ ที่เซิร์ฟเวอร์แบ็กเอนด์ได้ส่งส่วนหัวการตอบกลับContent-Encoding
พร้อมค่า ของ"utf-8"
ซึ่งไม่ใช่ การเข้ารหัสที่รองรับใน Apigee- ไปที่ระยะ AX (Analytics Data Recorded) ในการติดตามและคลิก
เลื่อนลงไปที่ส่วนข้อผิดพลาด / ส่วนหัวการตอบกลับในรายละเอียดระยะ ของแผงควบคุมและระบุ ค่าของ X-Apigee-fault-code และ X-Apigee-fault-source ดังที่แสดงด้านล่าง
คุณจะเห็นค่าของ X-Apigee-fault-code และ X-Apigee-fault-source เป็น
protocol.http.UnsupportedEncoding
และtarget
ซึ่งแสดงว่า เนื่องจากมีการส่งค่าการเข้ารหัสที่ไม่รองรับ"utf-8"
ด้วยแอตทริบิวต์ เซิร์ฟเวอร์แบ็กเอนด์ในส่วนหัวการตอบกลับContent-Encoding
ส่วนหัวการตอบกลับ ค่า X-Apigee-fault-code protocol.http.UnsupportedEncoding
X-Apigee-fault-source target
- ตรวจสอบว่าคุณกำลังใช้
เชนพร็อกซี กล่าวคือ หากเซิร์ฟเวอร์เป้าหมาย/ปลายทางเป้าหมายกำลังเรียกใช้
ใน Apigee
หากต้องการตรวจสอบปัญหานี้ ให้กลับไปที่ระยะส่งคำขอไปยังเซิร์ฟเวอร์เป้าหมาย คลิกแสดง Curl
- หน้าต่าง Curl for Request Sent to Target Server จะเปิดขึ้นเพื่อให้คุณทำตามขั้นตอนต่อไปนี้ได้ กำหนดชื่อแทนของโฮสต์เซิร์ฟเวอร์เป้าหมาย
- หากชื่อแทนโฮสต์ของเซิร์ฟเวอร์เป้าหมายชี้ไปยังชื่อแทนโฮสต์เสมือน แสดงว่าพร็อกซีนั้นคือพร็อกซี
การทำสายโซ่ ในกรณีนี้ คุณต้องทำขั้นตอนด้านบนทั้งหมดซ้ำสำหรับพร็อกซีที่มีการเชื่อมโยงจนกว่า
คุณจะทราบได้ว่าอะไรคือสาเหตุของข้อผิดพลาด
415 Unsupported Media Type
ที่แท้จริง - หากชื่อแทนโฮสต์ของเซิร์ฟเวอร์เป้าหมายชี้ไปยังเซิร์ฟเวอร์แบ็กเอนด์ แสดงว่านั่นเป็นการระบุ เซิร์ฟเวอร์แบ็กเอนด์ของคุณกำลังส่งการเข้ารหัสที่ไม่รองรับไปยัง Apigee
บันทึกการเข้าถึงของ Nginix
วิธีวินิจฉัยข้อผิดพลาดโดยใช้บันทึกการเข้าถึง NGINX
- หากคุณเป็นผู้ใช้ Private Cloud คุณสามารถใช้บันทึกการเข้าถึง NGINX ในการระบุ
ข้อมูลคีย์เกี่ยวกับข้อผิดพลาด HTTP
415
ตรวจสอบบันทึกการเข้าถึง NGINX ดังต่อไปนี้
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log
- ค้นหาข้อผิดพลาด
415
ใดๆ ในช่วงเวลาที่ระบุ (หากปัญหาเกิดขึ้น ) หรือมีคำขอใดที่ยังคงดำเนินการไม่สำเร็จกับ415
หากคุณพบข้อผิดพลาด
415
ที่มีการจับคู่ X-Apigee-fault-code ค่าของprotocol.http.UnsupportedEncoding
แล้วกำหนดค่า ของ X-Apigee-fault-source.ตัวอย่างข้อผิดพลาด 415 จากบันทึกการเข้าถึง NGINX
ตัวอย่างรายการข้างต้นจากบันทึกการเข้าถึง NGINX มีค่าต่อไปนี้สำหรับ X- Apigee-fault-code และ X-Apigee-fault-source:
ส่วนหัวการตอบกลับ ค่า X-Apigee-fault-code protocol.http.Response405WithoutAllowHeader
X-Apigee-fault-source MP
X-Apigee-fault-source อาจมีค่า
target
อยู่ด้วย
สาเหตุ: การเข้ารหัสที่ไม่รองรับในคำขอ
การวินิจฉัย
- กำหนดรหัสข้อผิดพลาดและแหล่งที่มาของข้อผิดพลาดสำหรับข้อผิดพลาดที่พบโดยใช้ API การตรวจสอบบันทึกการเข้าถึงหรือ NGINX ตามที่อธิบายไว้ใน ขั้นตอนการวินิจฉัยทั่วไป
- หากรหัสข้อผิดพลาดคือ
protocol.http.UnsupportedEncoding
และข้อผิดพลาด แหล่งที่มามีค่าapigee
หรือMP
ซึ่งบ่งบอกว่าพารามิเตอร์ คำขอที่ส่งโดยแอปพลิเคชันไคลเอ็นต์มีการเข้ารหัสที่ไม่รองรับในส่วนหัวของคำขอContent-Encoding
- คุณระบุค่าของการเข้ารหัสที่ไม่รองรับที่ส่งผ่านเป็นส่วนหนึ่งของคำขอ HTTP ได้
โดยใช้วิธีใดวิธีหนึ่งต่อไปนี้
ข้อความแสดงข้อผิดพลาด
ใช้ข้อความแสดงข้อผิดพลาดดังนี้หากคุณสามารถเข้าถึงข้อความแสดงข้อผิดพลาดทั้งหมดที่ได้รับจาก Apigee Edge ได้ โปรดดู เป็น
faultstring
faultstring
มีค่าของ การเข้ารหัสจบตัวอย่างข้อความแสดงข้อผิดพลาด
"faultstring":"Unsupported Encoding \"UTF-8\""
ในข้อความแสดงข้อผิดพลาดข้างต้น คุณจะเห็นว่าค่าของการเข้ารหัสที่ไม่รองรับ
“UTF-8”
ตามที่เห็นในfaultstring
เนื่องจาก
“UTF-8”
ไม่ใช่การเข้ารหัสที่รองรับใน Apigee Edge คำขอนี้ ล้มเหลวโดยมีข้อผิดพลาด415 Unsupported Media Type
ที่มีรหัสข้อผิดพลาด:protocol.http.UnsupportedEncoding
คำขอจริง
กรณีที่ใช้คำขอจริง- หากคุณไม่มีสิทธิ์เข้าถึงคำขอจริงจากแอปพลิเคชันไคลเอ็นต์ ให้ไปที่ การแก้ปัญหา
- หากคุณมีสิทธิ์เข้าถึงคำขอจริงจากแอปพลิเคชันไคลเอ็นต์ ให้ดำเนินการ
ขั้นตอนต่อไปนี้
- ระบุค่าที่ส่งไปยังส่วนหัวของคำขอ
Content-Encoding.
- หากค่าที่ส่งไปยังส่วนหัวของคำขอ
Content-Encoding
ไม่ใช่ค่าใด ของค่าที่แสดงอยู่ในการเข้ารหัสที่รองรับ สาเหตุของข้อผิดพลาดนี้ตัวอย่างคำขอ
curl -v "https://HOSTALIAS/v1/testgzip" -H "Content-Encoding: UTF-8" -X POST -d @request_payload.gz
คำขอตัวอย่างข้างต้นจะส่งค่า
"UTF-8"
ไปยังส่วนหัวContent- Encoding
ซึ่งไม่ใช่ การเข้ารหัสที่รองรับใน Apigee Edge ดังนั้นคำขอนี้จึงล้มเหลวโดยมีข้อผิดพลาด415 Unsupported Media Type
ที่มีรหัสข้อผิดพลาด:protocol.http.UnsupportedEncoding
- ระบุค่าที่ส่งไปยังส่วนหัวของคำขอ
ความละเอียด
- โปรดดูรายการการเข้ารหัสที่ Apigee รองรับใน การเข้ารหัสที่รองรับ
- ตรวจสอบว่าแอปพลิเคชันไคลเอ็นต์ส่งข้อมูลต่อไปนี้เสมอ
- เฉพาะการเข้ารหัสที่รองรับเป็นค่าสำหรับส่วนหัว
Content-Encoding
ใน คำขอ - เพย์โหลดคำขอในรูปแบบที่รองรับไปยัง Apigee Edge และตรงกับรูปแบบดังกล่าว
ที่ระบุไว้ในส่วนหัว
Content-Encoding
- เฉพาะการเข้ารหัสที่รองรับเป็นค่าสำหรับส่วนหัว
ในตัวอย่างข้างต้น เพย์โหลดคำขอมีส่วนขยาย
gz
ซึ่งระบุ เนื้อหาต้องเป็นgzip
คุณจะแก้ไขปัญหาได้โดยส่งส่วนหัวของคำขอ เป็นContent-Encoding: gzip
และเพย์โหลดคำขอในรูปแบบgzip
:curl -v "https://HOSTALIAS/v1/testgzip" -H "Content-Encoding: gzip" -X POST -d @request_payload.gz
สาเหตุ: ไม่รองรับการเข้ารหัสในการตอบกลับ
การวินิจฉัย
- กำหนดรหัสข้อผิดพลาดและแหล่งที่มาของข้อผิดพลาดสำหรับข้อผิดพลาดที่พบโดยใช้ API การตรวจสอบ เครื่องมือการติดตาม หรือบันทึกการเข้าถึงของ NGINX ตามที่อธิบายไว้ใน ขั้นตอนการวิเคราะห์ทั่วไป
- หาก Fault Source มีค่า
target
ก็จะแสดงค่าว่า การตอบกลับที่ส่งโดยเซิร์ฟเวอร์แบ็กเอนด์มีการเข้ารหัสที่ไม่ได้รับการสนับสนุนใน ส่วนหัวContent-Encoding
- คุณสามารถกำหนดค่าของการเข้ารหัสที่ไม่รองรับซึ่งส่งผ่านเป็นส่วนหนึ่งของการตอบสนอง HTTP จาก
เซิร์ฟเวอร์แบ็กเอนด์โดยใช้วิธีใดวิธีหนึ่งต่อไปนี้
ข้อความแสดงข้อผิดพลาด
ใช้ข้อความแสดงข้อผิดพลาดดังนี้หากคุณมีสิทธิ์เข้าถึงข้อความแสดงข้อผิดพลาดทั้งหมดที่ได้รับจาก Apigee Edge โปรดดูที่
faultstring
faultstring
มีค่าของ การเข้ารหัสที่ไม่รองรับตัวอย่างข้อความแสดงข้อผิดพลาด
"faultstring":"Unsupported Encoding \"UTF-8\""
-
ในข้อความแสดงข้อผิดพลาดข้างต้น คุณจะเห็นว่าค่าของการเข้ารหัสที่ไม่รองรับ
“UTF-8”
ตามที่เห็นในfaultstring
เนื่องจาก
“UTF-8”
ไม่ใช่การเข้ารหัสที่รองรับใน Apigee Edge คำขอล้มเหลวโดยมีข้อผิดพลาด415 Unsupported Media Type
รายการ รหัสข้อผิดพลาด:protocol.http.UnsupportedEncoding
เครื่องมือการติดตาม
เมื่อใช้ Trace- หากไม่มีการติดตามสำหรับคำขอที่ล้มเหลว ให้ไปที่ การแก้ปัญหา
- หากคุณได้บันทึกการติดตามสำหรับความล้มเหลวไว้ คุณสามารถตรวจสอบไฟล์
การเข้ารหัสที่ส่งผ่านโดยเซิร์ฟเวอร์แบ็กเอนด์โดยเป็นส่วนหนึ่งของการตอบสนองของ
Content-Encoding
ตามที่อธิบายไว้ในเครื่องมือการติดตาม
ความละเอียด
- โปรดดูรายการการเข้ารหัสที่ Apigee รองรับใน การเข้ารหัสที่รองรับ
- ตรวจสอบว่าเซิร์ฟเวอร์แบ็กเอนด์ส่งข้อมูลต่อไปนี้เสมอ
- เฉพาะการเข้ารหัสที่รองรับเป็นค่าของ
ส่วนหัว
Content-Encoding
ในคำขอ - เพย์โหลดการตอบกลับในรูปแบบที่รองรับไปยัง Apigee Edge และตรงกับรูปแบบดังกล่าว
ที่ระบุไว้ในส่วนหัว
Content-Encoding
- เฉพาะการเข้ารหัสที่รองรับเป็นค่าของ
ส่วนหัว
การเข้ารหัสที่รองรับ
ตารางต่อไปนี้แสดงรูปแบบการเข้ารหัสที่ Apigee Edge รองรับ
ส่วนหัว | การเข้ารหัส | คำอธิบาย |
---|---|---|
Content-Encoding |
gzip |
รูปแบบ Unix gzip |
deflate |
รูปแบบนี้ใช้โครงสร้าง zlib ที่มีอัลกอริทึมการบีบอัดแบบ Deflate |
ข้อมูลจำเพาะ
Apigee จะใช้การตอบกลับด้วยข้อผิดพลาด 415 Unsupported Media Type
ตาม
ข้อกำหนด RFC ต่อไปนี้
ข้อมูลจำเพาะ |
---|
RFC 7231 ส่วน 6.5.13: 415 ประเภทสื่อที่ไม่รองรับ |
สิ่งสำคัญที่ควรทราบ
โปรดทราบดังต่อไปนี้
- หาก Apigee แสดงข้อผิดพลาด
415
เนื่องจากมีการส่งการเข้ารหัสที่ไม่รองรับ ส่วนหัวContent-Encoding
เป็นส่วนหนึ่งของคำขอ API จากนั้นให้ทำดังนี้- คุณจะติดตามการติดตามสำหรับคำขอนี้ไม่ได้
-
คุณจะไม่สามารถแก้ไขรูปแบบหรือเนื้อหาของการตอบกลับข้อผิดพลาดที่ส่งโดย Apigee Edge ที่ใช้นโยบายต่างๆ เช่น RaiseFault, AssignMessage
เนื่องจากข้อผิดพลาดนี้เกิดขึ้นในระยะเริ่มต้นในโปรแกรมประมวลผลข้อความ สามารถดำเนินการตามนโยบายได้
- หาก Apigee แสดงข้อผิดพลาด
415
เนื่องจากมีการส่งการเข้ารหัสที่ไม่รองรับ ในส่วนหัวการตอบกลับจากเซิร์ฟเวอร์แบ็กเอนด์ แล้วจะต้องมีการแก้ไขใน เซิร์ฟเวอร์แบ็กเอนด์เพื่อหลีกเลี่ยงข้อผิดพลาดนี้ โปรดทํางานร่วมกับทีมแบ็กเอนด์ตามความเหมาะสมเพื่อ แก้ไขปัญหานี้
หากยังต้องการความช่วยเหลือจากทีมสนับสนุนของ Apigee Edge ให้ไปที่ต้องรวบรวมข้อมูลการวินิจฉัย
ต้องรวบรวมข้อมูลการวินิจฉัย
หากยังต้องการความช่วยเหลือจากทีมสนับสนุนของ Apigee โปรดรวบรวมข้อมูลต่อไปนี้ ข้อมูลการวินิจฉัย จากนั้นติดต่อฝ่ายสนับสนุนของ Apigee Edge
หากคุณเป็นผู้ใช้ระบบคลาวด์สาธารณะ โปรดระบุข้อมูลต่อไปนี้
- ชื่อองค์กร
- ชื่อสภาพแวดล้อม
- ชื่อพร็อกซี API
- ทำตามคำสั่ง
curl
ในการสร้างข้อผิดพลาด415
ซ้ำ - ไฟล์การติดตามสำหรับคำขอ API
หากคุณเป็นผู้ใช้ Private Cloud ให้ระบุข้อมูลต่อไปนี้
- พบข้อความแสดงข้อผิดพลาดทั้งหมดสำหรับคำขอที่ล้มเหลว
- ชื่อสภาพแวดล้อม
- แพ็กเกจพร็อกซี API
- ไฟล์การติดตามสำหรับคำขอ API
บันทึกการเข้าถึง NGINX
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log
ที่ไหน: ORG, ENV และ PORT# จะถูกแทนที่ด้วย มูลค่าจริง
- บันทึกระบบของผู้ประมวลผลข้อความ
/opt/apigee/var/log/edge-message- processor/logs/system.log