คุณกําลังดูเอกสารประกอบของ 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 (company) เนื่องจากจํานวนรายการออบเจ็กต์ในเพย์โหลด 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 เนื่องจากความลึกมากกว่า 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
line in the payload2
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
เนื่องจาก requests ไม่ใช่ค่าที่ถูกต้องและไม่อยู่ในขั้นตอนที่ระบบกำลังเรียกใช้นโยบาย คุณจึงได้รับข้อผิดพลาดต่อไปนี้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 และชื่อตัวแปร Source จากข้อความแสดงข้อผิดพลาด ตัวอย่างเช่น ในข้อความแสดงข้อผิดพลาดต่อไปนี้ ชื่อนโยบายคือ
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>