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

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

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

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

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

โปรแกรมประมวลผลข้อความเป็นองค์ประกอบหลักของ 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 รหัสข้อผิดพลาด (หรือที่เรียกว่ารหัสข้อบกพร่อง) ที่เชื่อมโยงกับข้อผิดพลาด

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

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

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

หมวดหมู่รหัสข้อผิดพลาดที่ครอบคลุมมีดังนี้

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

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

flow.*

flow.APITimedOut

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

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

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

หมายเหตุ: เพลย์บุ๊กนี้ให้วิธีการแก้ปัญหารหัสข้อผิดพลาด messaging.adaptors.http.flow.GatewayTimeout แต่คุณใช้เพลย์บุ๊กเดียวกันนี้เพื่อแก้ปัญหารหัสข้อผิดพลาด 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

VIDEO

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

PLAYBOOK

VIDEO

  • ข้อความแสดงข้อผิดพลาด:
ข้อความแสดงข้อผิดพลาดและรูปแบบอาจแตกต่างกันไปตามการติดตั้งใช้งานเซิร์ฟเวอร์แบ็กเอนด์
  • สาเหตุที่เป็นไปได้มีดังนี้
ข้อผิดพลาดนี้เกิดขึ้นหากเซิร์ฟเวอร์แบ็กเอนด์ตอบสนองด้วยรหัสสถานะ 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 Message Processor ภายใน ระยะหมดเวลา I/O ที่กำหนดค่าไว้ใน Message Processor
Playbook

messaging.adaptors.http.flow.LengthRequired

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

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

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

  • ข้อกำหนดของ 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 Message Processor ไม่ได้รับ เพย์โหลดคำขอจากแอปพลิเคชันไคลเอ็นต์สำหรับ ระยะหมดเวลา I/O ที่กำหนดค่าไว้ในคอมโพเนนต์ Message Processor

แก้ไข

ตรวจสอบว่าแอปพลิเคชันไคลเอ็นต์ส่งเพย์โหลดคำขอภายใน ระยะเวลาหมดเวลาของ I/O ที่กําหนดค่าไว้ในคอมโพเนนต์ Message Processor ของ 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 Lookup ไม่สำเร็จ:

VIDEO

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

วิดีโอ

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

messaging.adaptors.http.flow.SslHandshakeFailed

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

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

  1. Truststore ของ Message Processor ของ 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 และ
    • ข้อมูลแบบฟอร์มที่มีเครื่องหมายเปอร์เซ็นต์ ("%)" หรือเครื่องหมายเปอร์เซ็นต์ ("%)" ตามด้วยอักขระฐาน 16 ที่ไม่ถูกต้องซึ่งไม่อนุญาตตาม แบบฟอร์ม - ส่วน 17.13.4.1
  2. พร็อกซี API ใน Apigee Edge จะอ่านพารามิเตอร์แบบฟอร์มที่เจาะจงซึ่งมีอักขระที่ไม่ได้รับอนุญาตให้ใช้ ExtractVariable หรือนโยบาย 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
คู่มือ

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
คู่มือ

protocol.http.TooBigLine

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

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 Method Not Allowed และ RFC 7231 ส่วนที่ 7.4.1: Allow

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
คู่มือ

protocol.http.TooBigHeaders

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

protocol.http.TooBigLine

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

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 มีใบรับรองที่ถูกต้องของเซิร์ฟเวอร์แบ็กเอนด์