คุณกำลังดูเอกสารประกอบ Apigee Edge
ไปที่
เอกสารประกอบเกี่ยวกับ Apigee X. ข้อมูล
ExecutionFailed
รหัสข้อผิดพลาด
steps.jsonthreatprotection.ExecutionFailed
เนื้อหาการตอบกลับข้อผิดพลาด
{ "fault": { "faultstring": "JSONThreatProtection[policy_name]: Execution failed. reason: JSONThreatProtection[policy_name]: error_description at line line_num", "detail": { "errorcode": "steps.jsonthreatprotection.ExecutionFailed" } } }
ประเภทของข้อผิดพลาดและสาเหตุที่เป็นไปได้
นโยบาย JSONThreatProtection สามารถแสดงข้อผิดพลาด ExecutionFailed หลายประเภท ตารางด้านล่างแสดงรายการข้อผิดพลาดประเภทต่างๆ และสาเหตุที่เป็นไปได้
ประเภทข้อผิดพลาด | สาเหตุ |
เกินความยาวของชื่อรายการออบเจ็กต์ | เกินความยาวสตริงสูงสุดที่อนุญาตในชื่อรายการของออบเจ็กต์ |
จำนวนรายการออบเจ็กต์เกินขีดจำกัด | จำนวนรายการเกินจำนวนสูงสุดที่อนุญาตในออบเจ็กต์ |
จำนวนองค์ประกอบอาร์เรย์เกิน | จำนวนองค์ประกอบสูงสุดที่อนุญาตในอาร์เรย์ |
คอนเทนเนอร์มีความลึกเกิน | ความลึกที่ฝังเกินขีดจำกัดที่อนุญาต |
เกินความยาวค่าสตริง | เกินความยาวสูงสุดสำหรับค่าสตริง |
ออบเจ็กต์ JSON ไม่ถูกต้อง | เพย์โหลด JSON ของอินพุตไม่ถูกต้อง |
เกินความยาวของชื่อรายการออบเจ็กต์
เนื้อหาการตอบกลับข้อผิดพลาด
{ "fault": { "faultstring": "JSONThreatProtection[policy_name]: Execution failed. reason: JSONThreatProtection[policy_name]: Exceeded object entry name length at line line_num", "detail": { "errorcode": "steps.jsonthreatprotection.ExecutionFailed" } } }
ตัวอย่างเนื้อหาการตอบกลับของข้อผิดพลาด
{
"fault": {
"faultstring": "JSONThreatProtection[JSON-Threat-Protection-1]:
Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]:
Exceeded object entry name length at line 2",
"detail": {
"errorcode": "steps.jsonthreatprotection.ExecutionFailed"
}
}
}
สาเหตุ
ข้อผิดพลาดนี้เกิดขึ้นหากเพย์โหลดของข้อความอินพุตที่ระบุโดยองค์ประกอบ <Source>
มีออบเจ็กต์ JSON ที่มีชื่อพร็อพเพอร์ตี้เกินความยาวสูงสุดที่ระบุในองค์ประกอบ <ObjectEntryNameLength>
เช่น หากระบุองค์ประกอบ <ObjectEntryNameLength>
เป็น 5 ในนโยบาย แต่เพย์โหลดข้อความอินพุตมีพร็อพเพอร์ตี้ JSON ที่มีชื่อเกิน 5 อักขระ ระบบจะแสดงข้อผิดพลาดนี้
การวินิจฉัย
ตรวจสอบข้อความแสดงข้อผิดพลาดเพื่อระบุชื่อนโยบาย JSONThreatProtection และหมายเลขบรรทัดที่ชื่อรายการยาวปรากฏขึ้น เช่น ในข้อความแสดงข้อผิดพลาดต่อไปนี้ ชื่อนโยบาย JSONThreatProtection คือ
JSON-Threat-Protection-1
และหมายเลขบรรทัดในเพย์โหลดคือ 2JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded object entry name length at line 2
ตรวจสอบนโยบายที่คุณระบุในขั้นตอนที่ 1 และจดบันทึกค่าที่ระบุในองค์ประกอบ
<ObjectEntryNameLength>
ตัวอย่างเช่น ในนโยบาย JSONThreatProtection ต่อไปนี้
<ObjectEntryNameLength>
มีการตั้งค่าเป็น5
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1"> <DisplayName>JSON Threat Protection-1</DisplayName> <Properties/> <ArrayElementCount>3</ArrayElementCount> <ContainerDepth>12</ContainerDepth> <ObjectEntryCount>5</ObjectEntryCount> <ObjectEntryNameLength>5</ObjectEntryNameLength> <Source>request</Source> <StringValueLength>50</StringValueLength> </JSONThreatProtection>
ตรวจสอบหมายเลขบรรทัดที่เจาะจง (ระบุในขั้นตอนที่ 1) ของเพย์โหลดอินพุต และตรวจสอบว่าความยาวของชื่อออบเจ็กต์มากกว่าค่าที่ระบุในองค์ประกอบ
<ObjectEntryNameLength>
(ระบุในขั้นตอนที่ 2) หรือไม่ หากชื่อออบเจ็กต์มีความยาวมากกว่าตัวเลขนั้น ข้อผิดพลาดดังกล่าวก็จะเป็นสาเหตุของข้อผิดพลาดตัวอย่างเพย์โหลดอินพุตมีดังนี้
{ "number" : 500, "string" : "text" }
เพย์โหลด JSON ที่แสดงด้านบนมีพร็อพเพอร์ตี้ชื่อ
number
ที่บรรทัด 2 ซึ่งมี 6 อักขระ (ชื่อมีความยาว 6 อักขระ) เนื่องจากชื่อออบเจ็กต์มีความยาวมากกว่า 5 (ค่าที่ระบุสำหรับองค์ประกอบ<ObjectEntryNameLength>
) คุณจึงได้รับข้อผิดพลาดต่อไปนี้JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded object entry name length at line 2
ความละเอียด
หากนโยบาย JSONThreatProtection มีไว้เพื่อป้องกันเพย์โหลดที่มีชื่อรายการออบเจ็กต์เกินค่าที่กําหนดไว้ คุณก็ควรจะได้รับข้อความแสดงข้อผิดพลาด ในกรณีนี้ คุณไม่ต้องดำเนินการใดๆ เพิ่มเติม
อย่างไรก็ตาม หากคุณระบุว่าสามารถระบุชื่อรายการออบเจ็กต์ที่ยาวขึ้นในเพย์โหลดโดยไม่มีผลกระทบใดๆ ให้แก้ไข <ObjectEntryNameLength>
เป็นค่าที่เหมาะสมตามความต้องการของคุณ
เช่น หากคิดว่าสามารถอนุญาตชื่อออบเจ็กต์ที่มีความยาวไม่เกิน 10 อักขระได้ ให้แก้ไขนโยบาย JSONThreatProtection ดังนี้
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1">
<DisplayName>JSON Threat Protection-1</DisplayName>
<Properties/>
<ArrayElementCount>3</ArrayElementCount>
<ContainerDepth>12</ContainerDepth>
<ObjectEntryCount>5</ObjectEntryCount>
<ObjectEntryNameLength>10</ObjectEntryNameLength>
<Source>request</Source>
<StringValueLength>50</StringValueLength>
</JSONThreatProtection>
จำนวนรายการออบเจ็กต์เกินขีดจำกัด
เนื้อหาการตอบกลับข้อผิดพลาด
{ "fault": { "faultstring": "JSONThreatProtection[policy_name]: Execution failed. reason: JSONThreatProtection[policy_name]: Exceeded object entry count at line line_num", "detail": { "errorcode": "steps.jsonthreatprotection.ExecutionFailed" } } }
ตัวอย่างเนื้อหาการตอบกลับของข้อผิดพลาด
{
"fault": {
"faultstring": "JSONThreatProtection[JSON-Threat-Protection-1]:
Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]:
Exceeded object entry count at line 7",
"detail": {
"errorcode": "steps.jsonthreatprotection.ExecutionFailed"
}
}
}
สาเหตุ
ข้อผิดพลาดนี้เกิดขึ้นหากเพย์โหลดข้อความอินพุตที่ระบุโดยองค์ประกอบ <Source>
มีออบเจ็กต์ JSON ที่มีรายการ (พร็อพเพอร์ตี้) มากกว่าค่าที่ระบุในองค์ประกอบ <ObjectEntryCount>
ของนโยบาย
ตัวอย่างเช่น หากองค์ประกอบ <ObjectEntryCount>
คือ 5 แต่เพย์โหลด JSON ของอินพุตมีมากกว่า 5 รายการ ระบบจะแสดงข้อผิดพลาดนี้
การวินิจฉัย
ตรวจสอบข้อความแสดงข้อผิดพลาดเพื่อระบุชื่อนโยบาย JSONThreatProtection และหมายเลขบรรทัดที่มีจำนวนรายการเกิน ตัวอย่างเช่น ในข้อความแสดงข้อผิดพลาดต่อไปนี้ ชื่อนโยบายคือ
JSON-Threat-Protection-1
และหมายเลขบรรทัดในเพย์โหลดคือ7
JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded object entry count at line 7
จดบันทึกค่าที่ระบุในองค์ประกอบ
<ObjectEntryCount>
ของนโยบาย (ระบุในขั้นตอนที่ 1)ในตัวอย่างนโยบายต่อไปนี้
<ObjectEntryCount>
มีการตั้งค่าเป็น5
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1"> <DisplayName>JSON Threat Protection-1</DisplayName> <Properties/> <ArrayElementCount>3</ArrayElementCount> <ContainerDepth>12</ContainerDepth> <ObjectEntryCount>5</ObjectEntryCount> <ObjectEntryNameLength>6</ObjectEntryNameLength> <Source>request</Source> <StringValueLength>50</StringValueLength> </JSONThreatProtection>
ตรวจสอบหมายเลขบรรทัดเฉพาะ (ระบุไว้ในขั้นตอนที่ 1) ของเพย์โหลดอินพุต และตรวจสอบว่าจํานวนเอนทิตีในเพย์โหลดมากกว่าค่าที่ระบุสําหรับองค์ประกอบ
<ObjectEntryCount>
หรือไม่ (ระบุไว้ในขั้นตอนที่ 2) หากจำนวนออบเจ็กต์มากกว่าจำนวนรายการออบเจ็กต์ นั่นเป็นสาเหตุของข้อผิดพลาดตัวอย่างเพย์โหลดอินพุตมีดังนี้
{ "name" : "John", "id" : 234687, "age" : 31, "city" : "New York", "country" : "USA", "company" : "Google" }
ในเพย์โหลด JSON ที่แสดงด้านบน รายการที่ 6 จะเกิดขึ้นที่บรรทัดที่ 7 (บริษัท) เนื่องจากจํานวนรายการออบเจ็กต์ในเพย์โหลด JSON อินพุตมากกว่า 5 (ค่าที่ระบุสำหรับองค์ประกอบ
<ObjectEntryCount>
) คุณจึงได้รับข้อผิดพลาดต่อไปนี้JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded object entry count at line 7
ความละเอียด
หากนโยบาย JSONThreatProtection มีไว้เพื่อปกป้องจากเพย์โหลดที่มีจํานวนรายการออบเจ็กต์เกินเกณฑ์ที่เจาะจง คุณก็จะได้รับข้อความแสดงข้อผิดพลาด ในกรณีนี้ คุณไม่จำเป็นต้องดำเนินการใดๆ เพิ่มเติม
อย่างไรก็ตาม หากคุณพิจารณาว่าสามารถรวมรายการออบเจ็กต์ได้มากขึ้นในเพย์โหลดโดยไม่มีผลกระทบใดๆ ให้แก้ไข <ObjectEntryCount>
เป็นค่าที่เหมาะสมตามความต้องการของคุณ
เช่น หากคุณคิดว่าสามารถอนุญาตรายการออบเจ็กต์ได้สูงสุด 10 รายการ ให้แก้ไขนโยบาย JSONThreatProtection ดังนี้
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1">
<DisplayName>JSON Threat Protection-1</DisplayName>
<Properties/>
<ArrayElementCount>3</ArrayElementCount>
<ContainerDepth>12</ContainerDepth>
<ObjectEntryCount>10</ObjectEntryCount>
<ObjectEntryNameLength>6</ObjectEntryNameLength>
<Source>request</Source>
<StringValueLength>50</StringValueLength>
</JSONThreatProtection>
เกินจำนวนองค์ประกอบอาร์เรย์
เนื้อหาการตอบกลับข้อผิดพลาด
{ "fault": { "faultstring": "JSONThreatProtection[policy_name]: Execution failed. reason: JSONThreatProtection[policy_name]: Exceeded array element count at line line-num", "detail": { "errorcode": "steps.jsonthreatprotection.ExecutionFailed" } } }
ตัวอย่างเนื้อหาการตอบกลับของข้อผิดพลาด
{
"fault": {
"faultstring": "JSONThreatProtection[JSON-Threat-Protection-1]:
Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]:
Exceeded array element count at line 3",
"detail": {
"errorcode": "steps.jsonthreatprotection.ExecutionFailed"
}
}
}
สาเหตุ
ข้อผิดพลาดนี้เกิดขึ้นหากเพย์โหลดของข้อความอินพุตที่ระบุโดยองค์ประกอบ <Source>
มีอาร์เรย์ JSON ที่มีจํานวนองค์ประกอบมากกว่าตัวเลขที่ระบุในองค์ประกอบ <ArrayElementCount>
ของนโยบาย
ตัวอย่างเช่น หากระบุองค์ประกอบ <ArrayElementCount>
เป็น 3
แต่เพย์โหลดอินพุตมีอาร์เรย์ JSON ที่มีองค์ประกอบมากกว่า 3 รายการ ระบบจะแสดงข้อผิดพลาดนี้
การวินิจฉัย
ตรวจสอบข้อความแสดงข้อผิดพลาดเพื่อระบุชื่อนโยบายและหมายเลขบรรทัดที่มีความยาวเกินของอาร์เรย์ ตัวอย่างเช่น ในข้อความแสดงข้อผิดพลาดต่อไปนี้ ชื่อนโยบายคือ
JSON-Threat-Protection-1
และหมายเลขบรรทัดในเพย์โหลดคือ3
JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded array element count at line 3
จดบันทึกค่าที่ระบุสำหรับองค์ประกอบ
<ArrayElementCount>
ของนโยบาย (ระบุในขั้นตอนที่ 1)ในตัวอย่างนโยบาย JSONThreatProtection ต่อไปนี้
<ArrayElementCount>
ได้รับการตั้งค่าเป็น3
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1"> <DisplayName>JSON Threat Protection-1</DisplayName> <Properties/> <ArrayElementCount>3</ArrayElementCount> <ContainerDepth>12</ContainerDepth> <ObjectEntryCount>5</ObjectEntryCount> <ObjectEntryNameLength>6</ObjectEntryNameLength> <Source>request</Source> <StringValueLength>50</StringValueLength> </JSONThreatProtection>
ตรวจสอบหมายเลขบรรทัดที่เจาะจง (ระบุในขั้นตอนที่ 1) ของเพย์โหลดอินพุตและตรวจสอบว่าอาร์เรย์ที่ระบุมีจำนวนสูงกว่าตัวเลขที่ระบุในองค์ประกอบ
<ArrayElementCount>
(ระบุในขั้นตอนที่ 2) หรือไม่ หากองค์ประกอบอาร์เรย์เกินจํานวนเกิน นั่นคือสาเหตุของข้อผิดพลาดตัวอย่างเพย์โหลดอินพุตมีดังนี้
{ "name":"Ford", "models":[ "Mustang", "Endeavour", "Fiesta", "EcoSport", "Focus" ] }
เพย์โหลด JSON ที่แสดงด้านบนมีองค์ประกอบ 5 รายการในอาร์เรย์ชื่อ
models
ที่บรรทัด 3 เนื่องจากจำนวนขององค์ประกอบอาร์เรย์มากกว่า 3 (ค่า ระบุสำหรับเอลิเมนต์<ArrayElementCount>
) คุณได้รับข้อผิดพลาดต่อไปนี้JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded array element count at line 3
ความละเอียด
หากนโยบาย JSONThreatProtection มีไว้เพื่อปกป้องจากเพย์โหลดที่มีเกณฑ์จำนวนอาร์เรย์ที่เจาะจง คุณก็ควรจะได้รับข้อความแสดงข้อผิดพลาด ในกรณีนี้ คุณไม่จำเป็นต้องดำเนินการใดๆ เพิ่มเติม
อย่างไรก็ตาม ถ้าคุณระบุว่าจำนวนองค์ประกอบในอาร์เรย์สูงกว่าสามารถรองรับได้ ให้แก้ไข <ArrayElementCount>
เป็นค่าที่เหมาะสมตามความต้องการของคุณ
ตัวอย่างเช่น หากคุณคิดว่าอนุญาตองค์ประกอบอาร์เรย์ได้สูงสุด 5 รายการ ให้แก้ไขนโยบายดังนี้
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1">
<DisplayName>JSON Threat Protection-1</DisplayName>
<Properties/>
<ArrayElementCount>5</ArrayElementCount>
<ContainerDepth>12</ContainerDepth>
<ObjectEntryCount>5</ObjectEntryCount>
<ObjectEntryNameLength>6</ObjectEntryNameLength>
<Source>request</Source>
<StringValueLength>50</StringValueLength>
</JSONThreatProtection>
คอนเทนเนอร์มีความลึกเกิน
เนื้อหาการตอบกลับข้อผิดพลาด
การรับส่งข้อมูลรันไทม์แสดงผลโค้ดตอบกลับ 500 พร้อมข้อผิดพลาดต่อไปนี้
{ "fault": { "faultstring": "JSONThreatProtection[policy_name]: Execution failed. reason: JSONThreatProtection[policy_name]: Exceeded container depth at line line-num", "detail": { "errorcode": "steps.jsonthreatprotection.ExecutionFailed" } } }
ตัวอย่างเนื้อหาการตอบกลับของข้อผิดพลาด
{
"fault": {
"faultstring": "JSONThreatProtection[JSON-Threat-Protection-1]:
Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]:
Exceeded container depth at line 5",
"detail": {
"errorcode": "steps.jsonthreatprotection.ExecutionFailed"
}
}
}
สาเหตุ
ข้อผิดพลาดนี้เกิดขึ้นหากเพย์โหลดข้อความอินพุตที่ระบุโดยองค์ประกอบ <Source>
ประกอบด้วยออบเจ็กต์ JSON ที่มีองค์ประกอบ JSON ที่มีระดับคอนเทนเนอร์เกินระดับคอนเทนเนอร์สูงสุดที่ระบุไว้ในองค์ประกอบ <ContainerDepth>
ของนโยบาย ความลึกของคอนเทนเนอร์คือความลึกที่ฝังอยู่สูงสุดที่อนุญาตสำหรับองค์ประกอบ JSON เช่น อาร์เรย์ที่มีออบเจ็กต์ซึ่งมีออบเจ็กต์จะส่งผลให้ความลึกของคอนเทนเนอร์เท่ากับ 3
ตัวอย่างเช่น หากองค์ประกอบ <ContainerDepth>
คือ 3
แต่เพย์โหลดอินพุตมีความลึกของคอนเทนเนอร์เกินขีดจำกัดนี้ ระบบจะแสดงข้อผิดพลาดนี้
การวินิจฉัย
ตรวจสอบข้อความแสดงข้อผิดพลาดเพื่อระบุชื่อนโยบาย JSONThreatProtection และหมายเลขบรรทัดที่เกินความลึกของคอนเทนเนอร์ เช่น ในข้อความแสดงข้อผิดพลาดต่อไปนี้ ชื่อนโยบายคือ
JSON-Threat-Protection-1
และหมายเลขบรรทัดในเพย์โหลดคือ5
JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded container depth at line 5
จดค่าที่ระบุสำหรับองค์ประกอบ
<ContainerDepth>
(ระบุในขั้นตอนที่ 1)ในตัวอย่างนโยบาย JSONThreatProtection ต่อไปนี้
<ContainerDepth>
ได้รับการตั้งค่าเป็น5
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1"> <DisplayName>JSON Threat Protection-1</DisplayName> <Properties/> <ArrayElementCount>3</ArrayElementCount> <ContainerDepth>5</ContainerDepth> <ObjectEntryCount>5</ObjectEntryCount> <ObjectEntryNameLength>20</ObjectEntryNameLength> <Source>request</Source> <StringValueLength>50</StringValueLength> </JSONThreatProtection>
ตรวจสอบหมายเลขบรรทัดที่เจาะจง (ระบุในขั้นตอนที่ 1) ของเพย์โหลดอินพุตและตรวจสอบว่าความลึกของคอนเทนเนอร์ในเพย์โหลดสูงกว่าค่าที่ระบุในองค์ประกอบ
<ContainerDepth>
(ระบุในขั้นตอนที่ 2) หรือไม่ หากความลึกของคอนเทนเนอร์เกินกว่าจำนวนดังกล่าว นี่เองคือสาเหตุของข้อผิดพลาดตัวอย่างเพย์โหลดอินพุตมีดังนี้
{ "ContainerDepth2":[ { "ContainerDepth4":[ { "ContainerDepth6":[ "1", "2" ] } ] } ] }
เพย์โหลด JSON ที่แสดงด้านบนมีความลึกของคอนเทนเนอร์อยู่ที่ 6 ที่บรรทัดที่ 5 เนื่องจาก depth มากกว่า 5 ค่าที่ระบุสำหรับองค์ประกอบ
<ContainerDepth>
ของนโยบาย JSONThreatProtection คุณจะได้รับข้อผิดพลาดต่อไปนี้JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded container depth at line 5
ความละเอียด
หากนโยบาย JSONThreatProtection มีไว้เพื่อป้องกันเพย์โหลดที่มีความลึกของคอนเทนเนอร์เกินค่าที่ระบุ ก็คาดว่าจะมีข้อความแสดงข้อผิดพลาด ในกรณีนี้ คุณไม่จำเป็นต้องดำเนินการใดๆ เพิ่มเติม
อย่างไรก็ตาม หากคุณคิดว่ายอมรับความลึกของคอนเทนเนอร์ที่สูงกว่าได้ ให้แก้ไข <ContainerDepth>
เป็นค่าที่เหมาะสมตามความต้องการของคุณ
ตัวอย่างเช่น หากคุณคิดว่าสามารถอนุญาตให้ใช้คอนเทนเนอร์ที่มีความลึกสูงสุด 10 ชั้น ให้แก้ไขนโยบายดังนี้
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1">
<DisplayName>JSON Threat Protection-1</DisplayName>
<Properties/>
<ArrayElementCount>3</ArrayElementCount>
<ContainerDepth>10</ContainerDepth>
<ObjectEntryCount>5</ObjectEntryCount>
<ObjectEntryNameLength>20</ObjectEntryNameLength>
<Source>request</Source>
<StringValueLength>50</StringValueLength>
</JSONThreatProtection>
เกินความยาวค่าสตริง
เนื้อหาการตอบกลับข้อผิดพลาด
{ "fault": { "faultstring": "JSONThreatProtection[policy_name]: Execution failed. reason: JSONThreatProtection[policy_name]: Exceeded string value length at line line-num", "detail": { "errorcode": "steps.jsonthreatprotection.ExecutionFailed" } } }
ตัวอย่างเนื้อหาการตอบกลับของข้อผิดพลาด
{
"fault": {
"faultstring": "JSONThreatProtection[JSON-Threat-Protection-1]:
Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]:
Exceeded string value length at line 3",
"detail": {
"errorcode": "steps.jsonthreatprotection.ExecutionFailed"
}
}
}
สาเหตุ
ข้อผิดพลาดนี้เกิดขึ้นหากเพย์โหลดของข้อความอินพุตที่ระบุโดยองค์ประกอบ <Source>
มีองค์ประกอบ JSON ที่มีค่าที่มีอักขระมากกว่าที่อนุญาตโดยองค์ประกอบ <StringValueLength>
ตัวอย่างเช่น หากตั้งค่าองค์ประกอบ <StringValueLength>
ในนโยบายเป็น 50
แต่เพย์โหลดอินพุตมีองค์ประกอบอย่างน้อย 1 องค์ประกอบที่มีค่ามีอักขระมากกว่า 50 ตัว ระบบจะแสดงข้อผิดพลาดนี้
การวินิจฉัย
ตรวจสอบข้อความแสดงข้อผิดพลาดเพื่อระบุชื่อนโยบายและหมายเลขบรรทัดที่มีความยาวเกินสตริง ในตัวอย่างต่อไปนี้ ชื่อนโยบายคือบรรทัด
JSON-Threat-Protection-1 and
ในเพย์โหลด3
JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded string value length at line 3
จดค่าที่ระบุสำหรับองค์ประกอบ
<StringValueLength>
ใน (ที่ระบุไว้ในขั้นตอนที่ 1)ในตัวอย่างนโยบาย JSONThreatProtection ต่อไปนี้
<StringValueLength>
ได้รับการตั้งค่าเป็น50
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1"> <DisplayName>JSON Threat Protection-1</DisplayName> <Properties/> <ArrayElementCount>3</ArrayElementCount> <ContainerDepth>5</ContainerDepth> <ObjectEntryCount>5</ObjectEntryCount> <ObjectEntryNameLength>20</ObjectEntryNameLength> <Source>request</Source> <StringValueLength>50</StringValueLength> </JSONThreatProtection>
ตรวจสอบหมายเลขบรรทัดที่เจาะจง (ระบุในขั้นตอนที่ 1) ของเพย์โหลดอินพุตและตรวจสอบว่าความยาวของค่ามากกว่าจำนวนอักขระที่ระบุไว้สำหรับองค์ประกอบ
<StringValueLength>
(ระบุในขั้นตอนที่ 2) หรือไม่ หากความยาวของค่าเกินขีดจำกัด นั่นเป็นสาเหตุของข้อผิดพลาดตัวอย่างเพย์โหลดอินพุตมีดังนี้
{ "Country": "New Zealand", "Place Name": "Taumatawhakatangihangakoauauotamateaturipukakapikimaungahoronukupokaiwhenuakitanatahu" }
เพย์โหลด JSON ที่แสดงด้านบนมีออบเจ็กต์ชื่อ
Place Name
ที่มีค่าTaumatawhakatangihangakoauauotamateaturipukakapikimaungahoronukupokaiwhenuakitanatahu
ซึ่งมีความยาว 85 อักขระในบรรทัดที่ 3 เนื่องจากความยาวของค่ามากกว่า 50 ค่าที่ระบุในองค์ประกอบ<StringValueLength>
คุณจะได้ค่า ข้อผิดพลาดต่อไปนี้JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded string value length at line 3
ความละเอียด
หากนโยบาย JSONThreatProtection มีไว้เพื่อป้องกันเพย์โหลดที่มีค่าเกินความยาวสตริงที่เจาะจง ก็มักพบข้อความแสดงข้อผิดพลาด ในกรณีนี้ คุณไม่จำเป็นต้องดำเนินการใดๆ เพิ่มเติม
อย่างไรก็ตาม หากคุณพิจารณาว่าระบุความยาวค่าในเพย์โหลดได้นานขึ้น ให้แก้ไข <StringValueLength>
เป็นค่าที่เหมาะสมตามข้อกำหนดของคุณ
เช่น หากคิดว่าสามารถอนุญาตค่าได้ไม่เกิน 90 อักขระ ให้แก้ไขนโยบายดังนี้
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1">
<DisplayName>JSON Threat Protection-1</DisplayName>
<Properties/>
<ArrayElementCount>3</ArrayElementCount>
<ContainerDepth>5</ContainerDepth>
<ObjectEntryCount>5</ObjectEntryCount>
<ObjectEntryNameLength>20</ObjectEntryNameLength>
<Source>request</Source>
<StringValueLength>90</StringValueLength>
</JSONThreatProtection>
ออบเจ็กต์ JSON ไม่ถูกต้อง
เนื้อหาการตอบกลับข้อผิดพลาด
{ "fault": { "faultstring": "JSONThreatProtection[policy_name]: Execution failed. reason: string: at line line-num", "detail": { "errorcode": "steps.jsonthreatprotection.ExecutionFailed" } } }
ตัวอย่างเนื้อหาการตอบกลับของข้อผิดพลาด
{
"fault": {
"faultstring": "JSONThreatProtection[JSON-Threat-Protection-1]:
Execution failed. reason: Expecting : at line 3",
"detail": {
"errorcode": "steps.jsonthreatprotection.ExecutionFailed"
}
}
}
สาเหตุ
ข้อผิดพลาดนี้เกิดขึ้นหากเพย์โหลดของข้อความอินพุตที่ระบุโดยองค์ประกอบ <Source>
ในนโยบาย JSONThreatProtection ไม่ใช่ออบเจ็กต์ JSON ที่ถูกต้อง
การวินิจฉัย
ตรวจสอบข้อความแสดงข้อผิดพลาดเพื่อระบุชื่อนโยบายและหมายเลขบรรทัดที่เกิดข้อผิดพลาด ในตัวอย่างต่อไปนี้ ชื่อนโยบายคือบรรทัด
JSON-Threat-Protection-1 and
ในเพย์โหลด2
JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: Expecting : at line 3
ตรวจสอบหมายเลขบรรทัดที่เจาะจง (ระบุในขั้นตอนที่ 1) ของเพย์โหลดอินพุตและตรวจสอบว่าออบเจ็กต์ JSON ที่ส่งผ่านในเพย์โหลดเป็นออบเจ็กต์ JSON ที่ถูกต้องหรือไม่
ตัวอย่างเพย์โหลดอินพุตมีดังนี้
{ "Longitude": 6.11499, "Latitude" 50.76891 }
ในเพย์โหลด JSON ที่แสดงด้านบน บรรทัดที่ 3 ไม่มี
":"
(โคลอน) คุณจะได้รับข้อผิดพลาดเนื่องจากไม่ใช่ออบเจ็กต์ JSON ที่ถูกต้องJSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: Expecting : at line 3
ความละเอียด
ตรวจสอบว่าส่งเพย์โหลด JSON อินพุตที่ถูกต้องไปยังพร็อกซี API ที่มีนโยบาย JSONThreatProtection
สําหรับตัวอย่างที่อธิบายไว้ข้างต้น ให้แก้ไขเพย์โหลด JSON ดังนี้
{
"Longitude": 6.11499,
"Latitude" : 50.76891
}
SourceUnavailable
รหัสข้อผิดพลาด
steps.jsonthreatprotection.SourceUnavailable
เนื้อหาการตอบกลับข้อผิดพลาด
{ "fault": { "faultstring": "JSONThreatProtection[policy_name]:: Source[var_name] is not available" "detail": { "errorcode": "steps.jsonthreatprotection.SourceUnavailable" } } }
ตัวอย่างเนื้อหาการตอบกลับของข้อผิดพลาด
{
"fault": {
"faultstring": "JSONThreatProtection[JSON-Threat-Protection-1]::
Source requests is not available",
"detail": {
"errorcode": "steps.jsonthreatprotection.SourceUnavailable"
}
}
}
สาเหตุ
ข้อผิดพลาดนี้เกิดขึ้นหากตัวแปร message ที่ระบุไว้ในองค์ประกอบ <Source>
ของนโยบาย JSONThreatProtection เป็นค่าใดค่าหนึ่งต่อไปนี้
- อยู่นอกขอบเขต (ใช้ไม่ได้ในขั้นตอนที่เจาะจงที่กำลังบังคับใช้นโยบาย)
- ไม่ใช่ค่า
request
,response
หรือmessage
ที่ถูกต้อง
ตัวอย่างเช่น ข้อผิดพลาดนี้จะเกิดขึ้นหากมีการตั้งค่าองค์ประกอบ <Source>
ในนโยบายเป็น
ที่ไม่มีอยู่ในขั้นตอนที่มีการบังคับใช้นโยบาย
การวินิจฉัย
ระบุชื่อนโยบายและชื่อของตัวแปรแหล่งที่มาจากข้อความแสดงข้อผิดพลาด ตัวอย่างเช่น ในข้อความแสดงข้อผิดพลาดต่อไปนี้ ชื่อนโยบายคือ
JSON-Threat-Protection-1
และตัวแปรแหล่งที่มาคือrequests
JSONThreatProtection[JSON-Threat-Protection-1]:: Source requests is not available
ตรวจสอบค่าที่ระบุสำหรับองค์ประกอบ
<Source>
ที่ระบุไว้ในขั้นตอนที่ 1ในตัวอย่างนโยบาย JSONThreatProtection ต่อไปนี้ องค์ประกอบ
<Source>
มีการตั้งค่าเป็นrequests
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1"> <DisplayName>JSON Threat Protection-1</DisplayName> <Properties/> <ArrayElementCount>3</ArrayElementCount> <ContainerDepth>5</ContainerDepth> <ObjectEntryCount>5</ObjectEntryCount> <ObjectEntryNameLength>20</ObjectEntryNameLength> <Source>requests</Source> <StringValueLength>50</StringValueLength> </JSONThreatProtection>
ค่าที่ถูกต้องสำหรับองค์ประกอบ
<Source>
คือrequest
,response
หรือmessage
เพราะ คำขอไม่ใช่ค่าที่ถูกต้อง และไม่อยู่ในขั้นตอนที่นโยบาย และดำเนินการอยู่ คุณได้รับข้อผิดพลาดJSONThreatProtection[JSON-Threat-Protection-1]:: Source requests is not available
ความละเอียด
ตรวจสอบว่าตัวแปรที่ตั้งค่าไว้ในองค์ประกอบ <Source>
ของนโยบาย JSONThreatProtection ที่ล้มเหลวได้รับการตั้งค่าเป็น request
, response
หรือ message
และมีอยู่ในขั้นตอนที่นโยบายดำเนินอยู่
หากต้องการแก้ไขตัวอย่างนโยบาย JSONThreatProtection ที่แสดงด้านบน คุณสามารถแก้ไของค์ประกอบ <Source>
ให้ใช้ตัวแปร request
ได้ เนื่องจากตัวแปรดังกล่าวอยู่ในขั้นตอนการส่งคำขอ
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1">
<DisplayName>JSON Threat Protection-1</DisplayName>
<Properties/>
<ArrayElementCount>3</ArrayElementCount>
<ContainerDepth>5</ContainerDepth>
<ObjectEntryCount>5</ObjectEntryCount>
<ObjectEntryNameLength>20</ObjectEntryNameLength>
<Source>request</Source>
<StringValueLength>50</StringValueLength>
</JSONThreatProtection>
NonMessageVariable
รหัสข้อผิดพลาด
steps.jsonthreatprotection.NonMessageVariable
เนื้อหาการตอบกลับข้อผิดพลาด
{ "fault": { "faultstring": "JSONThreatProtection[policy_name]: Variable var_name does not resolve to a Message" "detail": { "errorcode": "steps.jsonthreatprotection.NonMessageVariable" } } }
ตัวอย่างเนื้อหาการตอบกลับของข้อผิดพลาด
{
"fault": {
"faultstring": "JSONThreatProtection[JSON-Threat-Protection-1]:
Variable message.content does not resolve to a Message",
"detail": {
"errorcode": "steps.jsonthreatprotection.NonMessageVariable"
}
}
}
สาเหตุ
ข้อผิดพลาดนี้เกิดขึ้นหากตั้งค่าองค์ประกอบ <Source>
ในนโยบาย JSONThreatProtection เป็นตัวแปรที่ไม่ใช่ประเภท message
ตัวแปรประเภทข้อความแสดงคำขอ HTTP และการตอบกลับทั้งหมด ฟังก์ชันในตัว คำขอ การตอบกลับ และข้อความตัวแปรโฟลว์ของ Apigee Edge เป็นข้อความประเภท ถึง ดูข้อมูลเพิ่มเติมเกี่ยวกับตัวแปรข้อความได้ที่ข้อมูลอ้างอิงตัวแปร
การวินิจฉัย
ระบุชื่อนโยบาย JSONThreatProtection และชื่อของตัวแปรแหล่งที่มา จากข้อความแสดงข้อผิดพลาด เช่น ในข้อความแสดงข้อผิดพลาดต่อไปนี้ ชื่อนโยบาย คือ
JSON-Threat-Protection-1
และตัวแปรแหล่งที่มาคือmessage.content
JSONThreatProtection[JSON-Threat-Protection-1]: Variable message.content does not resolve to a Message
ตรวจสอบองค์ประกอบ
<Source>
ของนโยบาย JSONThreatProtection (ระบุไว้ในขั้นตอนที่ 1)ในตัวอย่างนโยบาย JSONThreatProtection ต่อไปนี้
<Source>
ได้รับการตั้งค่าเป็นmessage.content
แทนmessage
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1"> <DisplayName>JSON Threat Protection-1</DisplayName> <Properties/> <ArrayElementCount>3</ArrayElementCount> <ContainerDepth>5</ContainerDepth> <ObjectEntryCount>5</ObjectEntryCount> <ObjectEntryNameLength>20</ObjectEntryNameLength> <Source>message.content</Source> <StringValueLength>50</StringValueLength> </JSONThreatProtection>
เนื่องจาก
message.content
ไม่ใช่ประเภทข้อความ คุณจึงได้รับข้อผิดพลาด:JSONThreatProtection[JSON-Threat-Protection-1]: Variable message.content does not resolve to a Message
ความละเอียด
ตรวจสอบว่าองค์ประกอบ <Source>
ในนโยบาย JSONThreatProtection ที่ดำเนินการไม่สำเร็จได้รับการตั้งค่าเป็นตัวแปรโฟลว์ประเภท message ที่มีอยู่ในโฟลว์ที่นโยบายทำงาน
หากต้องการแก้ไขนโยบาย ให้แก้ไของค์ประกอบ <Source>
เพื่อระบุตัวแปร
เป็นข้อความประเภท เช่น ใน JSONThreatProtection ที่ล้มเหลวคุณสามารถ
ระบุองค์ประกอบ <Source>
เป็น message
:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1">
<DisplayName>JSON Threat Protection-1</DisplayName>
<Properties/>
<ArrayElementCount>3</ArrayElementCount>
<ContainerDepth>5</ContainerDepth>
<ObjectEntryCount>5</ObjectEntryCount>
<ObjectEntryNameLength>20</ObjectEntryNameLength>
<Source>message</Source>
<StringValueLength>50</StringValueLength>
</JSONThreatProtection>