คุณกำลังดูเอกสารประกอบของ 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 เนื่องจากความลึกมากกว่า 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>