แคตตาล็อกข้อผิดพลาดรันไทม์

คุณกำลังดูเอกสารประกอบของ Apigee Edge
ไปที่เอกสารประกอบของ Apigee X
ข้อมูล

ข้อผิดพลาดใน Apigee Edge

เมื่อส่งคำขอ API ผ่าน Apigee Edge เราเตอร์และเครื่องมือประมวลผลข้อความของ Apigee Edge ก็ตลอดจนเซิร์ฟเวอร์แบ็กเอนด์สามารถแสดงผลข้อผิดพลาดไปยังแอปพลิเคชันไคลเอ็นต์ได้

ข้อผิดพลาดจากผู้ประมวลผลข้อความ

Message Processor เป็นคอมโพเนนต์หลักของ Apigee Edge ที่ประมวลผลนโยบายและโต้ตอบกับเซิร์ฟเวอร์แบ็กเอนด์ แสดงผลข้อผิดพลาดได้หากตรวจพบปัญหา เช่น

  • ปัญหาการเชื่อมต่อเครือข่าย, แฮนด์เชค TLS ไม่สำเร็จ, เซิร์ฟเวอร์แบ็กเอนด์ไม่พร้อมให้บริการ, ไม่มีการตอบสนองระหว่างสื่อสารกับเซิร์ฟเวอร์แบ็กเอนด์
  • ความล้มเหลวระหว่างการดำเนินการนโยบาย
  • ส่วนหัว HTTP, การเข้ารหัส, เส้นทาง, การไม่ปฏิบัติตามข้อกำหนดของ HTTP, เกินขีดจำกัดผลิตภัณฑ์ ฯลฯ ไม่ถูกต้อง
    • มีคำขอ HTTP ที่ส่งโดยแอปพลิเคชันไคลเอ็นต์
    • หรือ

    • ที่มีการตอบสนอง HTTP ที่ส่งโดยเซิร์ฟเวอร์แบ็กเอนด์
  • และอีกมากมาย

ตัวอย่างข้อผิดพลาดจากผู้ประมวลผลข้อความ

ตัวประมวลผลข้อความจะแสดงรหัสสถานะ HTTP ตามด้วยข้อความแสดงข้อผิดพลาดพร้อมรหัสข้อผิดพลาดในรูปแบบ JSON ดังที่แสดงด้านล่างเสมอ

แอปพลิเคชันไคลเอ็นต์จะได้รับโค้ดตอบกลับตามตัวอย่างต่อไปนี้

HTTP/1.1 414 Request-URI Too Long

การตอบสนองข้อผิดพลาดจากตัวประมวลผลข้อความจะปรากฏในรูปแบบต่อไปนี้:

{
   "fault":{
      "faultstring":"request line size exceeding 7,168",
      "detail":{
         "errorcode":"protocol.http.TooBigLine"
      }
   }
}

คำอธิบายของช่องในการตอบกลับข้อผิดพลาด

ฟิลด์ คำอธิบาย
faultstring มีข้อความแสดงข้อผิดพลาดที่อธิบายสาเหตุที่เป็นไปได้ของข้อผิดพลาดดังกล่าว
errorcode รหัสข้อผิดพลาด (หรือที่เรียกว่ารหัสข้อผิดพลาด) ที่เชื่อมโยงกับข้อผิดพลาด

แคตตาล็อกข้อผิดพลาดเกี่ยวกับรันไทม์

แคตตาล็อกข้อผิดพลาดนี้จะให้ข้อมูลทั้งหมดที่คุณจำเป็นต้องทราบเกี่ยวกับรหัสข้อผิดพลาดเกี่ยวกับรันไทม์ (สำหรับข้อผิดพลาดที่ไม่ใช่นโยบาย) ซึ่งแสดงผลโดยคอมโพเนนต์ผู้ประมวลผลข้อความ Apigee Edge โดยจะมีข้อมูลต่อไปนี้สําหรับรหัสข้อผิดพลาดแต่ละรายการ

  • รหัสสถานะ HTTP
  • ข้อความแสดงข้อผิดพลาด
  • สาเหตุที่เป็นไปได้ของข้อผิดพลาด
  • ข้อกำหนดเฉพาะของ HTTP และ/หรือข้อจำกัดของผลิตภัณฑ์ที่เกี่ยวข้อง
  • Playbook และวิดีโอที่มีวิธีวินิจฉัยสาเหตุของข้อผิดพลาดและวิธีแก้ปัญหาที่มีประสิทธิภาพซึ่งคุณนำไปใช้เพื่อแก้ไขข้อผิดพลาดด้วยตนเองได้ (หากมี)
  • การแก้ไขที่คุณนำมาใช้เพื่อแก้ไขข้อผิดพลาดด้วยตนเองได้

หมวดหมู่รหัสข้อผิดพลาดต่อไปนี้ครอบคลุมอยู่

ใช้ช่องค้นหาด้านล่างเพื่อกรองตารางเพื่อแสดงข้อมูลด้านบนสำหรับรหัสข้อผิดพลาดที่เจาะจง คุณค้นหารหัสสถานะหรือเนื้อหาในช่องใดก็ได้ในตาราง

รหัสข้อผิดพลาด คำอธิบาย แก้ไข

flow.*

flow.APITimedOut

  • รหัสสถานะ HTTP:
504 Gateway Timeout
  • ข้อความแสดงข้อผิดพลาด:
API timed out
  • สาเหตุที่เป็นไปได้:

ข้อผิดพลาดนี้จะเกิดขึ้นในกรณีต่อไปนี้

  • เซิร์ฟเวอร์แบ็กเอนด์ไม่ตอบสนองภายในระยะหมดเวลาที่กำหนดค่าไว้โดยพร็อพเพอร์ตี้ api.timeout สำหรับพร็อกซี API ที่เฉพาะเจาะจง
  • นโยบายใช้เวลานานเนื่องจากการประมวลผลที่หนักหน่วง ภาระงานสูง หรือประสิทธิภาพต่ำ

หมายเหตุ: Playbook นี้มีวิธีแก้ปัญหารหัสข้อผิดพลาด messaging.adaptors.http.flow.GatewayTimeout แต่คุณใช้ Playbook เดียวกันเพื่อแก้ปัญหารหัสข้อผิดพลาด flow.APITimedOut ได้

Playbook

flow.SharedFlowNotFound

  • รหัสสถานะ HTTP:
500 Internal Server Error
  • ข้อความแสดงข้อผิดพลาด:
Shared Flow {shared_flow_name} Not Found
  • สาเหตุที่เป็นไปได้:

ข้อผิดพลาดนี้จะเกิดขึ้นหากขั้นตอนที่แชร์ที่เจาะจงมีลักษณะดังต่อไปนี้

  • ไม่มี
  • หรือ

  • มีอยู่แต่ไม่ได้ทำให้ใช้งานได้
Playbook

messaging.adaptors.http.flow

messaging.adaptors.http.flow.ApplicationNotFound

  • รหัสสถานะ HTTP:
404 Not Found
  • ข้อความแสดงข้อผิดพลาด:
Unable to identify proxy for host: {virtual_host} and url: {pathsuffix}
  • สาเหตุที่เป็นไปได้:

ข้อผิดพลาดนี้เกิดขึ้นในสถานการณ์ใดสถานการณ์หนึ่งต่อไปนี้

  1. พร็อกซี API ที่เฉพาะเจาะจงคือ
    1. "ไม่ได้" กำหนดค่าให้ยอมรับคำขอบนโฮสต์เสมือนที่เฉพาะเจาะจง
    2. "ไม่ได้กำหนดค่า" ให้ยอมรับคำขอในเส้นทางเฉพาะที่ใช้ในคำขอ
    3. ไม่ได้ทำให้ใช้งานได้ในสภาพแวดล้อมเฉพาะที่คุณพยายามสร้างคำขอ API
    4. ไม่ได้ทำให้ใช้งานได้บนตัวประมวลผลข้อความอย่างน้อย 1 รายการ
  2. สภาพแวดล้อมเฉพาะที่คุณพยายามสร้างคำขอ API ไม่โหลดบนตัวประมวลผลข้อความอย่างน้อย 1 รายการ
Playbook
ข้อผิดพลาดนี้ยังเกิดขึ้นได้หากโฮสต์เสมือนหลายรายการมีชื่อแทนโฮสต์และหมายเลขพอร์ตเดียวกัน Playbook

messaging.adaptors.http.flow.DecompressionFailureAtRequest

  • รหัสสถานะ HTTP:
400 Bad Request
  • ข้อความแสดงข้อผิดพลาด:
Decompression failure at request
  • สาเหตุที่เป็นไปได้:

ข้อผิดพลาดนี้จะเกิดขึ้นเฉพาะในกรณีต่อไปนี้

  • การเข้ารหัสที่ระบุในส่วนหัวของคำขอ HTTP Content-Encoding ถูกต้องและ รองรับโดย Apigee Edge
  • แต่

  • รูปแบบเพย์โหลดที่ไคลเอ็นต์ส่งโดยเป็นส่วนหนึ่งของคำขอ HTTP ไม่ตรงกับรูปแบบการเข้ารหัสที่ระบุไว้ในส่วนหัว Content-Encoding
Playbook

messaging.adaptors.http.flow.DecompressionFailureAtResponse

  • รหัสสถานะ HTTP:
502 Bad Gateway
  • ข้อความแสดงข้อผิดพลาด:
Decompression failure at response
  • สาเหตุที่เป็นไปได้:

ข้อผิดพลาดนี้จะเกิดขึ้นเฉพาะในกรณีต่อไปนี้

  • การเข้ารหัสที่ระบุในส่วนหัวการตอบกลับ HTTP Content-Encoding ของเซิร์ฟเวอร์เป้าหมาย/แบ็กเอนด์นั้นถูกต้องและ รองรับโดย Apigee Edge
  • แต่

  • รูปแบบเพย์โหลดที่ส่งโดยเซิร์ฟเวอร์แบ็กเอนด์/เป้าหมายซึ่งเป็นส่วนหนึ่งของการตอบกลับ HTTP ไม่ตรงกับรูปแบบการเข้ารหัสที่ระบุในส่วนหัว Content-Encoding
Playbook

messaging.adaptors.http.flow.ErrorResponseCode

  • รหัสสถานะ HTTP:
500

Playbook

วิดีโอ

  • ข้อความแสดงข้อผิดพลาด:
ข้อความแสดงข้อผิดพลาดและรูปแบบอาจแตกต่างกันไปโดยขึ้นอยู่กับการใช้งานเซิร์ฟเวอร์แบ็กเอนด์
  • สาเหตุที่เป็นไปได้:
ข้อผิดพลาดนี้เกิดขึ้นหากเซิร์ฟเวอร์แบ็กเอนด์ตอบกลับด้วยรหัสสถานะ 500 ไปยัง Apigee Edge
  • รหัสสถานะ HTTP:
503

Playbook

วิดีโอ

  • ข้อความแสดงข้อผิดพลาด:
ข้อความแสดงข้อผิดพลาดและรูปแบบอาจแตกต่างกันไปโดยขึ้นอยู่กับการใช้งานเซิร์ฟเวอร์แบ็กเอนด์
  • สาเหตุที่เป็นไปได้:
ข้อผิดพลาดนี้เกิดขึ้นหากเซิร์ฟเวอร์แบ็กเอนด์ตอบกลับด้วยรหัสสถานะ 503 ไปยัง Apigee Edge
  • รหัสสถานะ HTTP:
504 Playbook
  • ข้อความแสดงข้อผิดพลาด:
ข้อความแสดงข้อผิดพลาดและรูปแบบอาจแตกต่างกันไปโดยขึ้นอยู่กับการใช้งานเซิร์ฟเวอร์แบ็กเอนด์
  • สาเหตุที่เป็นไปได้:
ข้อผิดพลาดนี้เกิดขึ้นหากเซิร์ฟเวอร์แบ็กเอนด์ตอบกลับด้วยรหัสสถานะ 504 ไปยัง Apigee Edge

หมายเหตุ: รหัสข้อผิดพลาด messaging.adaptors.http.flow.ErrorResponseCode จะไม่แสดงผลเป็นส่วนหนึ่งของข้อความแสดงข้อผิดพลาดที่ส่งไปยังแอปพลิเคชันไคลเอ็นต์ เนื่องจากรหัสข้อผิดพลาดนี้จะกำหนดโดย Apigee Edge ทุกครั้งที่เซิร์ฟเวอร์แบ็กเอนด์ตอบกลับพร้อมข้อผิดพลาดและรหัสสถานะ 4XX หรือ 5XX คุณดูรหัสข้อผิดพลาดนี้ได้ในการตรวจสอบ API, บันทึกการเข้าถึง NGINX หรือฐานข้อมูลการวิเคราะห์

messaging.adaptors.http.flow.GatewayTimeout

  • รหัสสถานะ HTTP:
504 Gateway Timeout
  • ข้อความแสดงข้อผิดพลาด:
Gateway Timeout
  • สาเหตุที่เป็นไปได้:
ข้อผิดพลาดนี้เกิดขึ้นหากเซิร์ฟเวอร์แบ็กเอนด์ไม่ตอบกลับไปยังผู้ประมวลผลข้อความ Apigee Edge ภายใน ระยะหมดเวลา I/O ที่กำหนดค่าไว้ในเครื่องมือประมวลผลข้อความ
Playbook

messaging.adaptors.http.flow.LengthRequired

  • รหัสสถานะ HTTP:
411 Length Required
  • ข้อความแสดงข้อผิดพลาด:
'Content-Length' is missing
  • สาเหตุที่เป็นไปได้:

ข้อผิดพลาดนี้เกิดขึ้นหากแอปพลิเคชันไคลเอ็นต์ไม่ส่งส่วนหัว Content-Length เป็นส่วนหนึ่งของคำขอ HTTP POST และ PUT ที่ส่งไปยัง Apigee Edge

หมายเหตุ: คำขอที่ดำเนินการไม่สำเร็จโดยมีข้อผิดพลาดนี้จะบันทึกในเครื่องมือติดตามไม่ได้ เนื่องจากผู้ประมวลผลข้อความจะดำเนินการตรวจสอบนี้ในระยะแรกซึ่งส่วนใหญ่ก่อนประมวลผลคำขอและใช้นโยบายในพร็อกซี API

  • ข้อกำหนดของ HTTP:
ส่วน RFC 3.3.2: ความยาวของเนื้อหา

แก้ไข

หากต้องการแก้ไขข้อผิดพลาดนี้ ให้ทําตามขั้นตอนต่อไปนี้

  1. ตรวจสอบว่าแอปพลิเคชันไคลเอ็นต์ส่งส่วนหัว Content-Length เสมอโดยเป็นส่วนหนึ่งของคำขอ HTTP POST และ PUT ที่ส่งไปยัง Apigee Edge เช่น

    curl -X POST https://HOSTALIAS/PATH -d '{"name": "abc"}' -H "Content-Length: 15"
    
  2. แม้ว่าคุณจะส่งเพย์โหลดที่ว่างเปล่าด้วยคำขอ POST และ PUT โปรดตรวจสอบว่ามีการส่งส่วนหัว Content-Length: 0 เช่น

    curl -X POST https://HOSTALIAS/PATH -H "Content-Length: 0"
    

messaging.adaptors.http.flow.NoActiveTargets

  • รหัสสถานะ HTTP:
503 Service Unavailable
  • ข้อความแสดงข้อผิดพลาด:
The Service is temporarily unavailable
  • สาเหตุที่เป็นไปได้:

ข้อผิดพลาดนี้เกิดขึ้นในสถานการณ์ใดสถานการณ์หนึ่งต่อไปนี้ หากคุณใช้ TargetServer ใน Apigee Edge

  1. การแปลง DNS ที่ไม่ถูกต้องของโฮสต์เซิร์ฟเวอร์แบ็กเอนด์โดยเซิร์ฟเวอร์การให้สิทธิ์ที่กำหนดเองส่งผลให้เกิดที่อยู่ IP ที่ไม่ถูกต้อง ทำให้เกิดข้อผิดพลาดในการเชื่อมต่อ
  2. ข้อผิดพลาดหมดเวลาการเชื่อมต่อเนื่องจาก:
    1. การจำกัดไฟร์วอลล์ในเซิร์ฟเวอร์แบ็กเอนด์จะป้องกันไม่ให้ Apigee Edge เชื่อมต่อกับเซิร์ฟเวอร์แบ็กเอนด์
    2. ปัญหาการเชื่อมต่อเครือข่ายระหว่าง Apigee Edge กับเซิร์ฟเวอร์แบ็กเอนด์
  3. โฮสต์ที่ระบุใน TargetServer ไม่ถูกต้องหรือมีอักขระที่ไม่พึงประสงค์ (เช่น การเว้นวรรค)

Playbook

วิดีโอ

ข้อผิดพลาดนี้อาจเกิดขึ้นได้เช่นกันหากการตรวจสอบประสิทธิภาพการทำงานที่กำหนดค่าไว้เพื่อตรวจสอบการตรวจสอบประสิทธิภาพการทำงานของเซิร์ฟเวอร์เป้าหมายล้มเหลว

Playbook

วิดีโอ

messaging.adaptors.http.flow.RequestTimeOut

  • รหัสสถานะ HTTP:
408 Request Timeout
  • ข้อความแสดงข้อผิดพลาด:
Request timed out
  • สาเหตุที่เป็นไปได้:
ข้อผิดพลาดนี้เกิดขึ้นหากผู้ประมวลผลข้อความ Apigee Edge ไม่ได้รับเพย์โหลดคำขอจากแอปพลิเคชันไคลเอ็นต์สำหรับ ระยะหมดเวลาของ I/O ที่กำหนดค่าไว้ในคอมโพเนนต์ตัวประมวลผลข้อความ

แก้ไข

ตรวจสอบว่าแอปพลิเคชันไคลเอ็นต์ส่งเพย์โหลดคำขอภายใน ระยะหมดเวลาของ I/O ที่กำหนดค่าไว้ในคอมโพเนนต์ตัวประมวลผลข้อความของ Apigee Edge

messaging.adaptors.http.flow.ServiceUnavailable

  • รหัสสถานะ HTTP:
503 Service Unavailable
  • ข้อความแสดงข้อผิดพลาด:
The Service is temporarily unavailable
  • สาเหตุที่เป็นไปได้:

ข้อผิดพลาดนี้เกิดขึ้นในสถานการณ์ใดสถานการณ์หนึ่งต่อไปนี้

  1. การแปลง DNS ที่ไม่ถูกต้องของโฮสต์เซิร์ฟเวอร์แบ็กเอนด์โดยเซิร์ฟเวอร์การให้สิทธิ์ที่กำหนดเองส่งผลให้เกิดที่อยู่ IP ที่ไม่ถูกต้อง ทำให้เกิดข้อผิดพลาดในการเชื่อมต่อ
  2. ข้อผิดพลาดหมดเวลาการเชื่อมต่อเนื่องจากสาเหตุต่อไปนี้
    1. การจำกัดไฟร์วอลล์ในเซิร์ฟเวอร์แบ็กเอนด์จะป้องกันไม่ให้ Apigee Edge เชื่อมต่อกับเซิร์ฟเวอร์แบ็กเอนด์
    2. ปัญหาการเชื่อมต่อเครือข่ายระหว่าง Apigee Edge กับเซิร์ฟเวอร์แบ็กเอนด์
  3. โฮสต์เซิร์ฟเวอร์เป้าหมายที่ระบุในปลายทางเป้าหมายไม่ถูกต้องหรือมีอักขระที่ไม่พึงประสงค์ (เช่น เว้นวรรค)

Playbook

DNS ทำงานล้มเหลว:

วิดีโอ

การเชื่อมต่อเครือข่าย:

วิดีโอ

ข้อผิดพลาดนี้ยังเกิดขึ้นได้หากเซิร์ฟเวอร์แบ็กเอนด์ปิดการเชื่อมต่อก่อนเวลาอันควรในขณะที่ผู้ประมวลผลข้อความยังคงส่งเพย์โหลดคำขอไปยังเซิร์ฟเวอร์แบ็กเอนด์ Playbook

messaging.adaptors.http.flow.SslHandshakeFailed

  • รหัสสถานะ HTTP:
503 Service Unavailable
  • ข้อความแสดงข้อผิดพลาด:
SSL Handshake failed {error_message}
  • สาเหตุที่เป็นไปได้:

ข้อผิดพลาดนี้เกิดขึ้นในกระบวนการแฮนด์เชค SSL ระหว่างผู้ประมวลผลข้อความของ Apigee Edge กับเซิร์ฟเวอร์แบ็กเอนด์ในกรณีต่อไปนี้

  1. Truststore ของผู้ประมวลผลข้อความของ Apigee Edge
    • มีเชนใบรับรองที่ไม่ตรงกับเชนใบรับรองที่สมบูรณ์ของเซิร์ฟเวอร์แบ็กเอนด์
    • หรือ

    • ไม่มีเชนใบรับรองที่สมบูรณ์ของเซิร์ฟเวอร์แบ็กเอนด์
  2. เชนใบรับรองที่แสดงโดยเซิร์ฟเวอร์แบ็กเอนด์
    • มีชื่อโดเมนแบบเต็ม (FQDN) ที่ไม่ตรงกับชื่อโฮสต์ที่ระบุในปลายทางเป้าหมาย
    • หรือ

    • มีเชนใบรับรองที่ไม่ถูกต้อง/ไม่สมบูรณ์

Playbook

วิดีโอ

messaging.adaptors.http.flow.UnexpectedEOFAtTarget

  • รหัสสถานะ HTTP:
502 Bad Gateway
  • ข้อความแสดงข้อผิดพลาด:
Unexpected EOF at target
  • สาเหตุที่เป็นไปได้:

ข้อผิดพลาดนี้เกิดขึ้นในสถานการณ์ใดสถานการณ์หนึ่งต่อไปนี้

  1. TargetServer ไม่ได้กำหนดค่าอย่างเหมาะสมให้รองรับการเชื่อมต่อ TLS/SSL ใน Apigee Edge
  2. เซิร์ฟเวอร์แบ็กเอนด์อาจปิดการเชื่อมต่อกะทันหันขณะที่ Apigee Edge กำลังรอการตอบกลับจากเซิร์ฟเวอร์แบ็กเอนด์
  3. กำหนดค่าระยะหมดเวลาของ Apigee และเซิร์ฟเวอร์แบ็กเอนด์ไม่ถูกต้อง
Playbook

messaging.runtime.*

messaging.runtime.RouteFailed

  • รหัสสถานะ HTTP:
500 Internal Server Error
  • ข้อความแสดงข้อผิดพลาด:
Unable to route the message to a TargetEndpoint
  • สาเหตุที่เป็นไปได้:

ข้อผิดพลาดนี้เกิดขึ้นหาก Apigee Edge กำหนดเส้นทางคำขอไปยัง TargetEndpoints ไม่ได้เนื่องจากสาเหตุต่อไปนี้

  • ไม่มีเงื่อนไขของกฎเส้นทาง (<RouteRule>) ที่ตรงกับคำขอในพร็อกซี
  • และ

  • ไม่มีการกำหนดกฎเส้นทางเริ่มต้นใน ProxyEndpoint (เช่น <RouteRule> โดยไม่มีเงื่อนไข)

แก้ไข

หากต้องการแก้ไขข้อผิดพลาดนี้ โปรดทำตามคำแนะนำต่อไปนี้

  1. ตรวจสอบกฎเส้นทางที่กำหนดไว้ใน ProxyEndpoint และแก้ไขเพื่อให้แน่ใจว่ามีเงื่อนไขของกฎเส้นทางอย่างน้อย 1 เงื่อนไขที่ตรงกับคำขอของคุณ
  2. แนวทางปฏิบัติที่ดีคือการกำหนดกฎเส้นทางเริ่มต้นที่ไม่มีเงื่อนไขเมื่อมี RouteRule หลายรายการ
  3. ตรวจสอบว่ากฎเส้นทางเริ่มต้นนั้นได้รับการกำหนดไว้ท้ายสุดในรายการเส้นทางแบบมีเงื่อนไขเสมอ เนื่องจากกฎจะได้รับการประเมินจากด้านบนใน ProxyEndpoint

ดูข้อมูลเพิ่มเติมเกี่ยวกับการกําหนดเงื่อนไข <RouteRule> ใน ProxyEndpoint ได้ที่ เป้าหมายแบบมีเงื่อนไข

messaging.runtime.SenseRaiseFault

  • รหัสสถานะ HTTP:
403 Forbidden
  • ข้อความแสดงข้อผิดพลาด:
Sense Fault
  • สาเหตุที่เป็นไปได้:
ข้อผิดพลาดนี้เกิดขึ้นหากคำขอ API สร้างขึ้นจากที่อยู่ IP ของไคลเอ็นต์ที่เจาะจง ซึ่งถูกบล็อกโดยเป็นส่วนหนึ่งของกฎ Apigee Sense

แก้ไข

หากต้องการแก้ไขข้อผิดพลาดนี้ โปรดทำตามคำแนะนำต่อไปนี้

  1. ยืนยันว่าคุณได้บล็อกที่อยู่ IP ของไคลเอ็นต์ที่เจาะจงแล้วโดย ตรวจสอบกฎที่กำหนดค่าไว้ใน Apigee Sense หากถูกบล็อก แสดงว่าแอปทำงานตามที่ออกแบบมา
  2. หากระบบไม่ได้บล็อกที่อยู่ IP ของไคลเอ็นต์ที่ระบุ แต่ยังคงได้รับข้อผิดพลาดนี้อยู่ โปรดติดต่อทีมสนับสนุนของ Apigee Edge

protocol.http.* - Caused due to bad request

protocol.http.BadFormData

  • รหัสสถานะ HTTP:
500 Internal Server Error
  • ข้อความแสดงข้อผิดพลาด:
Bad Form Data
  • สาเหตุที่เป็นไปได้:

ข้อผิดพลาดนี้จะเกิดขึ้นในกรณีที่ตรงกับเงื่อนไขต่อไปนี้ทั้งหมดเท่านั้น

  1. คำขอ HTTP ที่ไคลเอ็นต์ส่งไปยัง Apigee Edge มีดังนี้
    • Content-Type: application/x-www-form-urlencoded และ
    • ข้อมูลในแบบฟอร์มที่มีเครื่องหมายเปอร์เซ็นต์ (%) หรือเครื่องหมายเปอร์เซ็นต์ (%) ตามด้วยอักขระฐานสิบหกที่ไม่ถูกต้องซึ่งไม่ได้รับอนุญาตตาม แบบฟอร์ม - ส่วนที่ 17.13.4.1
  2. พร็อกซี API ใน Apigee Edge จะอ่านพารามิเตอร์ของฟอร์มที่เจาะจงซึ่งมีอักขระที่ไม่ได้รับอนุญาตโดยใช้ ExtractVariant หรือนโยบาย AssignMessage ในขั้นตอนคำขอ
Playbook

protocol.http.DuplicateHeader

  • รหัสสถานะ HTTP:
400 Bad Request
  • ข้อความแสดงข้อผิดพลาด:
Duplicate Header "{header_name}"
  • สาเหตุที่เป็นไปได้:
ข้อผิดพลาดนี้เกิดขึ้นหากส่วนหัว HTTP ที่ไม่อนุญาตให้ซ้ำกันใน Apigee Edge ปรากฏมากกว่า 1 ครั้งโดยมีค่าเดียวกันหรือแตกต่างกัน ซึ่งเป็นส่วนหนึ่งของคำขอ HTTP ที่ส่งมาจากแอปพลิเคชันไคลเอ็นต์ไปยัง Apigee Edge
  • ข้อกำหนดของ HTTP:
RFC 7230 ส่วน 3.2.2: ลำดับของช่อง
Playbook

protocol.http.EmptyHeaderName

  • รหัสสถานะ HTTP:
400 Bad Request
  • ข้อความแสดงข้อผิดพลาด:
Header name cannot be empty
  • สาเหตุที่เป็นไปได้:
ข้อผิดพลาดนี้เกิดขึ้นหากชื่อส่วนหัวที่ส่งไปเป็นส่วนหนึ่งของคำขอ HTTP โดยแอปพลิเคชันไคลเอ็นต์ไปยัง Apigee Edge ว่างเปล่า
  • ข้อกำหนดของ HTTP:
RFC 7230 ส่วนที่ 3.2: ช่องส่วนหัว

แก้ไข

ตรวจสอบว่าคำขอ HTTP ที่ส่งจากแอปพลิเคชันไคลเอ็นต์ไปยัง Apigee Edge มีชื่อส่วนหัวที่ถูกต้องตาม RFC 7230, ส่วนที่ 3.2: ช่องส่วนหัวเสมอ

protocol.http.HeaderNameWithNonAsciiChar

  • รหัสสถานะ HTTP:
400 Bad Request
  • ข้อความแสดงข้อผิดพลาด:
Header {header_name} contains non ascii character {character}
  • สาเหตุที่เป็นไปได้:
ข้อผิดพลาดนี้จะเกิดขึ้นหากชื่อส่วนหัวที่ส่งเป็นส่วนหนึ่งของคำขอ HTTP โดยแอปพลิเคชันไคลเอ็นต์ไปยัง Apigee Edge มีอักขระที่ไม่ใช่ ASCII
  • ข้อกำหนดของ HTTP:

RFC 7230, ส่วนที่ 3.2: ช่องส่วนหัว และ RFC 7230, ส่วน 3.2.6: คอมโพเนนต์ค่าช่อง

แก้ไข

ตรวจสอบว่าคำขอ HTTP ของไคลเอ็นต์ที่ส่งไปยัง Apigee Edge ไม่มีอักขระที่ไม่ใช่ ASCII ในชื่อส่วนหัวตาม RFC 7230 ส่วนที่ 3.2.6: คอมโพเนนต์ค่าช่อง

protocol.http.HeaderWithInvalidChar

  • รหัสสถานะ HTTP:
400 Bad Request
  • ข้อความแสดงข้อผิดพลาด:
Header {header_name} contains invalid character {character}
  • สาเหตุที่เป็นไปได้:
ข้อผิดพลาดนี้เกิดขึ้นหากชื่อส่วนหัวที่ส่งเป็นส่วนหนึ่งของคำขอ HTTP โดยแอปพลิเคชันไคลเอ็นต์ไปยัง Apigee Edge มีอักขระที่ไม่ถูกต้อง เช่น เท่ากับ (=), คอมมา (,), เซมิโคลอน (;), แท็บ, CRLF และอักขระบรรทัดใหม่
  • ข้อกำหนดของ HTTP:

RFC 7230, ส่วนที่ 3.2: ช่องส่วนหัว และ RFC 7230, ส่วน 3.2.6: คอมโพเนนต์ค่าช่อง

แก้ไข

ตรวจสอบว่าคำขอ HTTP ที่ส่งโดยแอปพลิเคชันไคลเอ็นต์ไปยัง Apigee Edge ไม่มีอักขระที่ไม่ถูกต้องในชื่อส่วนหัวตาม RFC 7230 ส่วน 3.2.6: คอมโพเนนต์ค่าช่อง

protocol.http.InvalidPath

  • รหัสสถานะ HTTP:
400 Bad Request
  • ข้อความแสดงข้อผิดพลาด:
Invalid path {path}
  • สาเหตุที่เป็นไปได้:
ข้อผิดพลาดนี้จะเกิดขึ้นหากเส้นทางใน URL คำขอ HTTP ที่ส่งมาจากแอปพลิเคชันไคลเอ็นต์ไปยัง Apigee Edge มีอักขระที่ไม่ได้รับอนุญาตตามข้อกำหนดเฉพาะ RFC 3986 ส่วนที่ 3.3: เส้นทาง
  • ข้อกำหนดของ HTTP:

RFC 3986 ส่วนที่ 3: คอมโพเนนต์ไวยากรณ์และ RFC 3986 ส่วนที่ 3.3: เส้นทาง

แก้ไข

ตรวจสอบว่าเส้นทางใน URL คำขอ HTTP ที่ส่งโดยแอปพลิเคชันไคลเอ็นต์ไปยัง Apigee Edge ไม่มีอักขระที่ไม่ได้รับอนุญาตตาม ตาม RFC 3986 ส่วนที่ 3.3: เส้นทาง

protocol.http.TooBigBody

  • รหัสสถานะ HTTP:
413 Request Entity Too Large
  • ข้อความแสดงข้อผิดพลาด:
Body buffer overflow
  • สาเหตุที่เป็นไปได้:
ข้อผิดพลาดนี้เกิดขึ้นหากขนาดเปย์โหลดที่ส่งโดยแอปพลิเคชันไคลเอ็นต์ซึ่งเป็นส่วนหนึ่งของคำขอ HTTP ไปยัง Apigee Edge มากกว่าขีดจำกัดที่อนุญาตใน Apigee Edge
  • ข้อจำกัด
ขีดจำกัดของ Apigee Edge
Playbook

protocol.http.TooBigHeaders

  • รหัสสถานะ HTTP:
431 Request Header Fields Too Large
  • ข้อความแสดงข้อผิดพลาด:
request headers size exceeding {limit}
  • สาเหตุที่เป็นไปได้:
ส่วนหัวของคำขอทั้งหมดที่ส่งโดยแอปพลิเคชันไคลเอ็นต์ซึ่งเป็นส่วนหนึ่งของคำขอ HTTP ที่ส่งไปยัง Apigee Edge มากกว่าขีดจำกัดที่อนุญาตใน Apigee Edge
  • ข้อกำหนดของ HTTP:
RFC 6585 ส่วนที่ 5: 431 ช่องส่วนหัวของคำขอใหญ่เกินไป
  • ข้อจำกัด
ขีดจำกัดของ Apigee Edge
Playbook

protocol.http.TooBigLine

  • รหัสสถานะ HTTP:
414 Request-URI Too Long
  • ข้อความแสดงข้อผิดพลาด:
request line size exceeding {limit}
  • สาเหตุที่เป็นไปได้:
ข้อผิดพลาดนี้เกิดขึ้นหากขนาดของบรรทัดคำขอที่ส่งโดยแอปพลิเคชันไคลเอ็นต์ซึ่งเป็นส่วนหนึ่งของคำขอ HTTP ไปยัง Apigee Edge มากกว่าขีดจำกัดที่อนุญาตใน Apigee Edge
  • ข้อจำกัด
ขีดจำกัดของ Apigee Edge
Playbook

protocol.http.UnsupportedEncoding

  • รหัสสถานะ HTTP:
415 Unsupported Media
  • ข้อความแสดงข้อผิดพลาด:
Unsupported Encoding "{encoding}"
  • สาเหตุที่เป็นไปได้:
ข้อผิดพลาดนี้เกิดขึ้นหากส่วนหัว Content-Encoding ที่ไคลเอ็นต์ส่งโดยเป็นส่วนหนึ่งของการตอบกลับ HTTP มีรูปแบบการเข้ารหัส/เพย์โหลดที่ Apigee Edge ไม่รองรับ
  • ข้อกำหนดของ HTTP:
RFC 7231 ส่วน 6.5.13: 415 ประเภทสื่อที่ไม่รองรับ
Playbook

protocol.http.* - Caused by target

protocol.http.BadPath

  • รหัสสถานะ HTTP:
500 Internal Server Error
  • ข้อความแสดงข้อผิดพลาด:
Invalid request path
  • สาเหตุที่เป็นไปได้:
ข้อผิดพลาดนี้จะเกิดขึ้นหาก URL คำขอของเซิร์ฟเวอร์แบ็กเอนด์ที่แสดงโดยตัวแปรโฟลว์ target.url มีเส้นทางที่เริ่มต้นด้วยเครื่องหมายคำถาม (?) แทนเครื่องหมายทับ (/) ซึ่งไม่ถูกต้อง
  • ข้อกำหนดของ HTTP:

RFC 3986 ส่วนที่ 3: คอมโพเนนต์ไวยากรณ์และ RFC 3986 ส่วนที่ 3.3: เส้นทาง

Playbook

protocol.http.DuplicateHeader

  • รหัสสถานะ HTTP:
502 Bad Gateway
  • ข้อความแสดงข้อผิดพลาด:
Duplicate Header "{header_name}"
  • สาเหตุที่เป็นไปได้:
ข้อผิดพลาดนี้เกิดขึ้นหากส่วนหัว HTTP ที่ไม่อนุญาตให้ซ้ำกันใน Apigee Edge ปรากฏมากกว่า 1 ครั้งโดยมีค่าเดียวกันหรือแตกต่างกัน ซึ่งเป็นส่วนหนึ่งของการตอบกลับ HTTP ที่ส่งโดยเซิร์ฟเวอร์แบ็กเอนด์ไปยัง Apigee Edge
  • ข้อกำหนดของ HTTP:
RFC 7230 ส่วน 3.2.2: ลำดับของช่อง
Playbook

protocol.http.EmptyHeaderName

  • รหัสสถานะ HTTP:
502 Bad Gateway
  • ข้อความแสดงข้อผิดพลาด:
Header name cannot be empty
  • สาเหตุที่เป็นไปได้:
ข้อผิดพลาดนี้เกิดขึ้นหากชื่อส่วนหัวที่ส่งจากเซิร์ฟเวอร์แบ็กเอนด์โดยเป็นส่วนหนึ่งของการตอบกลับ HTTP ไปยัง Apigee Edge ว่างเปล่า
  • ข้อกำหนดของ HTTP:
RFC 7230 ส่วนที่ 3.2: ช่องส่วนหัว

แก้ไข

ตรวจสอบว่าการตอบกลับ HTTP ที่ส่งโดยเซิร์ฟเวอร์แบ็กเอนด์ไปยัง Apigee Edge มีชื่อส่วนหัวที่ถูกต้องตาม RFC 7230, ส่วนที่ 3.2: ช่องส่วนหัวเสมอ

protocol.http.EmptyPath

  • รหัสสถานะ HTTP:
500 Internal Server Error
  • ข้อความแสดงข้อผิดพลาด:
Request path cannot be empty
  • สาเหตุที่เป็นไปได้:
ข้อผิดพลาดนี้จะเกิดขึ้นหาก URL คำขอ HTTP ของเซิร์ฟเวอร์แบ็กเอนด์ที่แสดงโดยตัวแปรโฟลว์ target.url มีเส้นทางที่ว่างเปล่า
  • ข้อกำหนดของ HTTP:

RFC 3986 ส่วนที่ 3: คอมโพเนนต์ไวยากรณ์ และ RFC 3986, ส่วนที่ 3.3: เส้นทาง

Playbook

protocol.http.HeaderNameWithNonAsciiChar

  • รหัสสถานะ HTTP:
502 Bad Gateway
  • ข้อความแสดงข้อผิดพลาด:
Header {header_name} contains non ascii character {character}
  • สาเหตุที่เป็นไปได้:
ข้อผิดพลาดนี้จะเกิดขึ้นหากชื่อส่วนหัวที่เซิร์ฟเวอร์แบ็กเอนด์ส่งซึ่งเป็นส่วนหนึ่งของการตอบกลับ HTTP ไปยัง Apigee Edge มีอักขระที่ไม่ใช่ ASCII
  • ข้อกำหนดของ HTTP:

RFC 7230, ส่วนที่ 3.2: ช่องส่วนหัว และ RFC 7230, ส่วน 3.2.6: คอมโพเนนต์ค่าช่อง

แก้ไข

ตรวจสอบว่าการตอบกลับ HTTP ของเซิร์ฟเวอร์แบ็กเอนด์ที่ส่งไปยัง Apigee Edge ไม่มีอักขระที่ไม่ใช่ ASCII ในชื่อส่วนหัวตาม RFC 7230 ส่วน 3.2.6: คอมโพเนนต์ค่าช่อง

protocol.http.HeaderWithInvalidChar

  • รหัสสถานะ HTTP:
502 Bad Gateway
  • ข้อความแสดงข้อผิดพลาด:
Header {header_name} contains invalid character {character}
  • สาเหตุที่เป็นไปได้:
ข้อผิดพลาดนี้เกิดขึ้นหากชื่อส่วนหัวที่ส่งจากเซิร์ฟเวอร์แบ็กเอนด์โดยเป็นส่วนหนึ่งของการตอบกลับ HTTP มีอักขระที่ไม่ถูกต้อง เช่น เท่ากับ (=), คอมมา (,), เซมิโคลอน (;), แท็บ, CRLF และอักขระขึ้นบรรทัดใหม่
  • ข้อกำหนดของ HTTP:

RFC 7230, ส่วนที่ 3.2: ช่องส่วนหัว และ RFC 7230, ส่วน 3.2.6: คอมโพเนนต์ค่าช่อง

แก้ไข

ตรวจสอบว่าการตอบกลับ HTTP ของเซิร์ฟเวอร์แบ็กเอนด์ที่ส่งไปยัง Apigee Edge ไม่มีอักขระที่ไม่ถูกต้องในชื่อส่วนหัวตาม RFC 7230 ส่วน 3.2.6: คอมโพเนนต์ค่าช่อง

protocol.http.ProxyTunnelCreationFailed

  • รหัสสถานะ HTTP:
503 Service Unavailable
  • ข้อความแสดงข้อผิดพลาด:
Proxy refused to create tunnel with response status {status code}
  • สาเหตุที่เป็นไปได้:

ข้อผิดพลาดนี้เกิดขึ้นระหว่างการสร้างอุโมงค์ข้อมูลระหว่าง Apigee Edge กับเซิร์ฟเวอร์แบ็กเอนด์โดยพร็อกซีเซิร์ฟเวอร์ เนื่องจากไฟร์วอลล์, ACL (รายการควบคุมการเข้าถึง), ปัญหาเกี่ยวกับ DNS, ความพร้อมใช้งานของเซิร์ฟเวอร์แบ็กเอนด์ ฯลฯ

หมายเหตุ: รหัสสถานะในข้อความแสดงข้อผิดพลาด (faultstring) ระบุสาเหตุโดยรวมของปัญหา

Playbook

protocol.http.Response306Reserved

  • รหัสสถานะ HTTP:
502 Bad Gateway
  • ข้อความแสดงข้อผิดพลาด:
Response Status code 306 is reserved, so can't be used.
  • สาเหตุที่เป็นไปได้:

ข้อผิดพลาดนี้เกิดขึ้นหากเซิร์ฟเวอร์แบ็กเอนด์ตอบกลับด้วยรหัสสถานะ 306 ไปยัง Apigee Edge

รหัสสถานะ 306 กำหนดไว้ในข้อกำหนด HTTP เวอร์ชันก่อนหน้า ตามข้อกำหนดเฉพาะของ HTTP ปัจจุบัน โค้ดนี้มีการสงวนไว้และไม่ควรใช้

  • ข้อกำหนดของ HTTP:
RFC 7231, ส่วน 6.3.5: 306 ที่สงวนไว้

แก้ไข

เนื่องจากรหัสสถานะ 306 มีการสงวนไว้ โปรดตรวจสอบว่าเซิร์ฟเวอร์แบ็กเอนด์ไม่ได้ใช้รหัสสถานะนี้ขณะส่งการตอบกลับไปยัง Apigee Edge

protocol.http.Response405WithoutAllowHeader

  • รหัสสถานะ HTTP:
502 Bad Gateway
  • ข้อความแสดงข้อผิดพลาด:
Received 405 Response without Allow Header
  • สาเหตุที่เป็นไปได้:
เซิร์ฟเวอร์แบ็กเอนด์ตอบกลับด้วยรหัสสถานะ 405 Method Not Allowed โดยไม่มีส่วนหัว "Allow"
  • ข้อกำหนดของ HTTP:

RFC 7231 ส่วน 6.5.5: 405 ไม่อนุญาตวิธีการและ RFC 7231 ส่วน 7.4.1: อนุญาต

Playbook

protocol.http.ResponseWithBody

  • รหัสสถานะ HTTP:
502 Bad Gateway
  • ข้อความแสดงข้อผิดพลาด:
Received {status_code} Response with message body
  • สาเหตุที่เป็นไปได้:

ข้อผิดพลาดนี้เกิดขึ้นหากการตอบกลับ HTTP จากเซิร์ฟเวอร์แบ็กเอนด์ไปยัง Apigee Edge เป็น 204 No Content หรือ 205 Reset Content แต่มีเนื้อหาการตอบกลับและ/หรือส่วนหัวต่อไปนี้อย่างน้อย 1 รายการ

  • Content-Length
  • Content-Encoding
  • Transfer-Encoding
  • ข้อกำหนดของ HTTP:

RFC 7231 ส่วน 6.3.5: 204 ไม่มีเนื้อหาและ RFC 7231 ส่วน 6.3.6: 205 รีเซ็ตเนื้อหา

Playbook

protocol.http.TooBigBody

  • รหัสสถานะ HTTP:
502 Bad Gateway
  • ข้อความแสดงข้อผิดพลาด:
Body buffer overflow
  • สาเหตุที่เป็นไปได้:
ข้อผิดพลาดนี้เกิดขึ้นหากขนาดเปย์โหลดที่ส่งโดยแอปพลิเคชันไคลเอ็นต์ซึ่งเป็นส่วนหนึ่งของคำขอ HTTP ไปยัง Apigee Edge มากกว่าขีดจำกัดที่อนุญาตใน Apigee Edge
  • ข้อจำกัด
ขีดจำกัดของ Apigee Edge
Playbook

protocol.http.TooBigHeaders

  • รหัสสถานะ HTTP:
502 Bad Gateway
  • ข้อความแสดงข้อผิดพลาด:
response headers size exceeding {limit}
  • สาเหตุที่เป็นไปได้:
ข้อผิดพลาดนี้จะเกิดขึ้นหากขนาดรวมของส่วนหัวการตอบกลับทั้งหมดที่เซิร์ฟเวอร์แบ็กเอนด์ส่งซึ่งเป็นส่วนหนึ่งของการตอบกลับ HTTP ไปยัง Apigee Edge มากกว่าขีดจำกัดที่อนุญาตใน Apigee Edge
  • ข้อจำกัด
ขีดจำกัดของ Apigee Edge
Playbook

protocol.http.TooBigLine

  • รหัสสถานะ HTTP:
502 Bad Gateway
  • ข้อความแสดงข้อผิดพลาด:
response line size exceeding {limit}
  • สาเหตุที่เป็นไปได้:
ข้อผิดพลาดนี้จะเกิดขึ้นหากขนาดของบรรทัดการตอบกลับที่เซิร์ฟเวอร์แบ็กเอนด์ส่งซึ่งเป็นส่วนหนึ่งของการตอบกลับ HTTP ไปยัง Apigee Edge มากกว่าขีดจำกัดที่อนุญาตใน Apigee Edge
  • ข้อจำกัด
ขีดจำกัดของ Apigee Edge
Playbook

protocol.http.UnsupportedEncoding

  • รหัสสถานะ HTTP:
415 Unsupported Media
  • ข้อความแสดงข้อผิดพลาด:
Unsupported Encoding "{encoding}"
  • สาเหตุที่เป็นไปได้:
ข้อผิดพลาดนี้เกิดขึ้นหากส่วนหัว Content-Encoding ที่ส่งมาจากเซิร์ฟเวอร์แบ็กเอนด์โดยเป็นส่วนหนึ่งของการตอบกลับ HTTP มีรูปแบบการเข้ารหัส/เพย์โหลดที่ Apigee Edge ไม่ได้รองรับ
  • ข้อกำหนดของ HTTP:
RFC 7231 ส่วน 6.5.13: 415 ประเภทสื่อที่ไม่รองรับ
Playbook

security.util.*

security.util.KeyAliasNotFound

  • รหัสสถานะ HTTP:
500 Internal Server Error
  • ข้อความแสดงข้อผิดพลาด:
KeyAlias {KeyAlias_name} is not found in Keystore {Keystore_Name}
  • สาเหตุที่เป็นไปได้:

ข้อผิดพลาดนี้เกิดขึ้นหากไม่พบ KeyAlias ที่เจาะจงใน TargetEndpoint หรือ TargetServer ในคีย์สโตร์ที่ระบุ

แก้ไข

ตรวจสอบว่ามี KeyAlias ที่ระบุใน TargetEndpoint หรือ TargetServer และเป็นส่วนหนึ่งของคีย์สโตร์ที่ระบุ

security.util.TrustStoreWithNoCertificates

  • รหัสสถานะ HTTP:
500 Internal Server Error
  • ข้อความแสดงข้อผิดพลาด:
TrustStore {truststore_name} has no certificates
  • สาเหตุที่เป็นไปได้:

ข้อผิดพลาดนี้เกิดขึ้นหาก Truststore ที่เจาะจงที่อ้างอิงใน TargetEndpoint หรือ TargetServer ไม่มีใบรับรองใดๆ

แก้ไข

หากคุณต้องการตรวจสอบใบรับรองของเซิร์ฟเวอร์แบ็กเอนด์และต้องการใช้ Truststore ใน TargetEndpoint หรือ TargetServer ให้ตรวจสอบว่า Truststore มีใบรับรองที่ถูกต้องของเซิร์ฟเวอร์แบ็กเอนด์