Bạn đang xem tài liệu về Apigee Edge.
Truy cập vào
tài liệu Apigee X. thông tin
ExecutionFailed
Mã lỗi
steps.jsonthreatprotection.ExecutionFailed
Nội dung phản hồi lỗi
{ "fault": { "faultstring": "JSONThreatProtection[policy_name]: Execution failed. reason: JSONThreatProtection[policy_name]: error_description at line line_num", "detail": { "errorcode": "steps.jsonthreatprotection.ExecutionFailed" } } }
Các loại lỗi và nguyên nhân có thể gây ra lỗi
Chính sách JSONThreatProtection có thể đưa ra nhiều loại lỗi ExecutionFailed. Bảng dưới đây liệt kê các loại lỗi và nguyên nhân có thể gây ra lỗi:
| Loại lỗi | Nguyên nhân |
| Vượt quá độ dài tên mục nhập đối tượng | Đã vượt quá độ dài tối đa của chuỗi được phép trong tên mục nhập của một đối tượng. |
| Vượt quá số lượng mục nhập đối tượng | Vượt quá số lượng mục tối đa được phép trong một đối tượng. |
| Vượt quá số lượng phần tử mảng | Đã vượt quá số lượng phần tử tối đa được phép trong một mảng. |
| Vượt quá độ sâu của vùng chứa | Đã vượt quá độ sâu lồng tối đa cho phép. |
| Vượt quá độ dài giá trị chuỗi | Độ dài tối đa cho phép của một giá trị chuỗi đã bị vượt quá. |
| Đối tượng JSON không hợp lệ | Tải trọng JSON đầu vào không hợp lệ. |
Vượt quá độ dài tên mục nhập đối tượng
Nội dung phản hồi lỗi
{ "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" } } }
Ví dụ về nội dung phản hồi Lỗi
{
"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"
}
}
}
Nguyên nhân
Lỗi này xảy ra nếu tải trọng thông báo đầu vào do phần tử <Source> chỉ định chứa một đối tượng JSON có tên thuộc tính vượt quá độ dài tối đa được chỉ định trong phần tử <ObjectEntryNameLength>.
Ví dụ: nếu phần tử <ObjectEntryNameLength> được chỉ định là 5 trong chính sách, nhưng tải trọng thông báo đầu vào có một thuộc tính JSON có tên vượt quá 5 ký tự, thì lỗi này sẽ xảy ra.
Chẩn đoán
Kiểm tra thông báo lỗi để xác định tên chính sách JSONThreatProtection và số dòng nơi tên mục nhập dài xuất hiện. Ví dụ: trong thông báo lỗi sau, tên chính sách JSONThreatProtection là
JSON-Threat-Protection-1và số dòng trong tải trọng là 2.JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded object entry name length at line 2Kiểm tra chính sách mà bạn đã xác định ở Bước 1 và lưu ý giá trị được chỉ định trong phần tử
<ObjectEntryNameLength>.Ví dụ: trong chính sách JSONThreatProtection sau đây,
<ObjectEntryNameLength>được đặt thành5:<?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>Kiểm tra số dòng cụ thể (được xác định ở Bước 1) của tải trọng đầu vào và kiểm tra xem độ dài tên đối tượng có lớn hơn giá trị được chỉ định trong phần tử
<ObjectEntryNameLength>(được xác định ở Bước 2) hay không. Nếu độ dài tên đối tượng vượt quá số đó, thì đó là nguyên nhân gây ra lỗi.Sau đây là ví dụ về tải trọng đầu vào:
{ "number" : 500, "string" : "text" }Tải trọng JSON ở trên có một thuộc tính tên là
numberở dòng 2 có 6 ký tự (độ dài tên là 6). Vì độ dài của tên đối tượng lớn hơn 5 (giá trị được chỉ định cho phần tử<ObjectEntryNameLength>), nên bạn sẽ gặp lỗi sau:JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded object entry name length at line 2
Độ phân giải
Nếu chính sách JSONThreatProtection nhằm mục đích bảo vệ khỏi các tải trọng có tên mục nhập đối tượng vượt quá giá trị đã xác định, thì thông báo lỗi sẽ xuất hiện. Trong trường hợp này, bạn không cần làm gì thêm.
Tuy nhiên, nếu bạn xác định rằng có thể chỉ định tên mục nhập đối tượng dài hơn trong tải trọng mà không gây ra hậu quả nào, thì hãy sửa đổi <ObjectEntryNameLength> thành một giá trị phù hợp dựa trên yêu cầu của bạn.
Ví dụ: nếu bạn cho rằng bạn có thể cho phép tên đối tượng có độ dài tối đa là 10 ký tự, thì hãy sửa đổi chính sách JSONThreatProtection như sau:
<?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>
Vượt quá số lượng mục nhập đối tượng
Nội dung phản hồi lỗi
{ "fault": { "faultstring": "JSONThreatProtection[policy_name]: Execution failed. reason: JSONThreatProtection[policy_name]: Exceeded object entry count at line line_num", "detail": { "errorcode": "steps.jsonthreatprotection.ExecutionFailed" } } }
Ví dụ về nội dung phản hồi Lỗi
{
"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"
}
}
}
Nguyên nhân
Lỗi này xảy ra nếu tải trọng thông báo đầu vào do phần tử <Source> chỉ định chứa một đối tượng JSON có nhiều mục (thuộc tính) hơn giá trị được chỉ định trong phần tử <ObjectEntryCount> của chính sách.
Ví dụ: nếu phần tử <ObjectEntryCount> là 5, nhưng tải trọng JSON đầu vào có hơn 5 mục nhập, thì lỗi này sẽ xảy ra.
Chẩn đoán
Kiểm tra thông báo lỗi để xác định tên chính sách JSONThreatProtection và số dòng mà số mục nhập vượt quá. Ví dụ: trong thông báo lỗi sau, tên chính sách là
JSON-Threat-Protection-1và số dòng trong tải trọng là7:JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded object entry count at line 7Ghi lại giá trị được chỉ định trong phần tử
<ObjectEntryCount>của chính sách (được xác định ở Bước 1).Trong ví dụ sau về chính sách,
<ObjectEntryCount>được đặt thành5:<?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>Kiểm tra số dòng cụ thể (được xác định ở Bước 1) của tải trọng đầu vào và kiểm tra xem số lượng thực thể trong tải trọng có lớn hơn giá trị được chỉ định cho phần tử
<ObjectEntryCount>(được xác định ở Bước 2) hay không. Nếu số lượng đối tượng vượt quá số lượng mục đối tượng, thì đó là nguyên nhân gây ra lỗi.Sau đây là ví dụ về tải trọng đầu vào:
{ "name" : "John", "id" : 234687, "age" : 31, "city" : "New York", "country" : "USA", "company" : "Google" }Trong tải trọng JSON nêu trên, mục thứ 6 xuất hiện ở dòng số 7 (công ty). Vì số lượng mục nhập đối tượng trong tải trọng JSON đầu vào lớn hơn 5 (giá trị được chỉ định cho phần tử
<ObjectEntryCount>), nên bạn sẽ gặp lỗi sau:JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded object entry count at line 7
Độ phân giải
Nếu chính sách JSONThreatProtection nhằm mục đích bảo vệ chống lại các tải trọng có số lượng mục nhập đối tượng vượt quá một ngưỡng cụ thể, thì thông báo lỗi này là điều có thể xảy ra. Trong trường hợp này, bạn không cần làm gì thêm.
Tuy nhiên, nếu bạn xác định rằng có thể đưa thêm các mục nhập đối tượng vào tải trọng mà không gây ra hậu quả nào, thì hãy sửa đổi <ObjectEntryCount> thành một giá trị phù hợp dựa trên yêu cầu của bạn.
Ví dụ: Nếu bạn cho rằng mình có thể cho phép tối đa 10 mục nhập đối tượng, hãy sửa đổi chính sách JSONThreatProtection như sau:
<?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>
Đã vượt quá số lượng phần tử mảng
Nội dung phản hồi lỗi
{ "fault": { "faultstring": "JSONThreatProtection[policy_name]: Execution failed. reason: JSONThreatProtection[policy_name]: Exceeded array element count at line line-num", "detail": { "errorcode": "steps.jsonthreatprotection.ExecutionFailed" } } }
Ví dụ về nội dung phản hồi Lỗi
{
"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"
}
}
}
Nguyên nhân
Lỗi này xảy ra nếu tải trọng thông báo đầu vào do phần tử <Source> chỉ định chứa một mảng JSON có số lượng phần tử lớn hơn số lượng được chỉ định trong phần tử <ArrayElementCount> của chính sách.
Ví dụ: nếu phần tử <ArrayElementCount> được chỉ định là 3, nhưng tải trọng đầu vào có một mảng JSON có hơn 3 phần tử, thì lỗi này sẽ xảy ra.
Chẩn đoán
Kiểm tra thông báo lỗi để xác định tên chính sách và số dòng mà độ dài mảng vượt quá. Ví dụ: trong thông báo lỗi sau, tên chính sách là
JSON-Threat-Protection-1và số dòng trong tải trọng là3:JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded array element count at line 3Ghi lại giá trị được chỉ định cho phần tử
<ArrayElementCount>của chính sách (được xác định ở Bước 1).Trong ví dụ về chính sách JSONThreatProtection sau đây,
<ArrayElementCount>được đặt thành3:<?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>Kiểm tra số dòng cụ thể (được xác định ở Bước 1) của tải trọng đầu vào và kiểm tra xem mảng được chỉ định ở đó có số lượng cao hơn số lượng được chỉ định trong phần tử
<ArrayElementCount>(được xác định ở Bước 2) hay không. Nếu số lượng phần tử mảng vượt quá số lượng, thì đó là nguyên nhân gây ra lỗi.Sau đây là ví dụ về tải trọng đầu vào:
{ "name":"Ford", "models":[ "Mustang", "Endeavour", "Fiesta", "EcoSport", "Focus" ] }Tải trọng JSON nêu trên có 5 phần tử trong mảng có tên là
modelsở dòng 3. Vì số lượng phần tử mảng lớn hơn 3 (giá trị được chỉ định cho phần tử<ArrayElementCount>), nên bạn sẽ gặp lỗi sau:JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded array element count at line 3
Độ phân giải
Nếu chính sách JSONThreatProtection nhằm mục đích bảo vệ chống lại các tải trọng có ngưỡng số lượng mảng cụ thể, thì thông báo lỗi sẽ xuất hiện. Trong trường hợp này, bạn không cần làm gì thêm.
Tuy nhiên, nếu bạn xác định rằng có thể cho phép số lượng phần tử cao hơn trong một mảng, thì hãy sửa đổi <ArrayElementCount> thành một giá trị phù hợp dựa trên yêu cầu của bạn.
Ví dụ: Nếu bạn cho rằng mình có thể cho phép tối đa 5 phần tử mảng, hãy sửa đổi chính sách như sau:
<?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>
Đã vượt quá độ sâu của vùng chứa
Nội dung phản hồi lỗi
Lưu lượng truy cập trong thời gian chạy trả về mã phản hồi 500 kèm theo lỗi sau:
{ "fault": { "faultstring": "JSONThreatProtection[policy_name]: Execution failed. reason: JSONThreatProtection[policy_name]: Exceeded container depth at line line-num", "detail": { "errorcode": "steps.jsonthreatprotection.ExecutionFailed" } } }
Ví dụ về nội dung phản hồi Lỗi
{
"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"
}
}
}
Nguyên nhân
Lỗi này xảy ra nếu tải trọng thông báo đầu vào do phần tử <Source> chỉ định chứa một đối tượng JSON chứa các phần tử JSON có độ sâu vùng chứa vượt quá độ sâu vùng chứa tối đa được chỉ định trong phần tử <ContainerDepth> của chính sách. Độ sâu của vùng chứa là độ sâu lồng nhau tối đa được phép cho các phần tử JSON. Ví dụ: một mảng chứa một đối tượng chứa một đối tượng sẽ dẫn đến độ sâu chứa là 3.
Ví dụ: nếu phần tử <ContainerDepth> là 3, nhưng tải trọng đầu vào có độ sâu vùng chứa vượt quá giới hạn này, thì lỗi này sẽ xảy ra.
Chẩn đoán
Kiểm tra thông báo lỗi để xác định tên chính sách JSONThreatProtection và số dòng nơi độ sâu của vùng chứa vượt quá giới hạn. Ví dụ: trong thông báo lỗi sau, tên chính sách là
JSON-Threat-Protection-1và số dòng trong tải trọng là5.JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded container depth at line 5Ghi lại giá trị được chỉ định cho phần tử
<ContainerDepth>(được xác định ở Bước 1).Trong ví dụ về chính sách JSONThreatProtection sau đây,
<ContainerDepth>được đặt thành5:<?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>Kiểm tra số dòng cụ thể (được xác định ở Bước 1) của tải trọng đầu vào và kiểm tra xem chiều sâu của vùng chứa trong tải trọng có cao hơn giá trị được chỉ định trong phần tử
<ContainerDepth>(được xác định ở Bước 2) hay không. Nếu độ sâu của vùng chứa vượt quá số lượng, thì đó là nguyên nhân gây ra lỗi.Sau đây là ví dụ về tải trọng đầu vào:
{ "ContainerDepth2":[ { "ContainerDepth4":[ { "ContainerDepth6":[ "1", "2" ] } ] } ] }Tải trọng JSON ở trên có độ sâu vùng chứa là 6 ở dòng 5. Vì độ sâu lớn hơn 5, nên giá trị được chỉ định cho phần tử
<ContainerDepth>của chính sách JSONThreatProtection mà bạn nhận được lỗi sau:JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded container depth at line 5
Độ phân giải
Nếu chính sách JSONThreatProtection nhằm mục đích bảo vệ chống lại các tải trọng có độ sâu vùng chứa vượt quá giá trị được chỉ định, thì thông báo lỗi sẽ xuất hiện. Trong trường hợp này, bạn không cần làm gì thêm.
Tuy nhiên, nếu bạn xác định rằng độ sâu của vùng chứa cao hơn là chấp nhận được, hãy sửa đổi <ContainerDepth> thành một giá trị phù hợp dựa trên các yêu cầu của bạn.
Ví dụ: Nếu bạn cho rằng bạn có thể cho phép độ sâu của vùng chứa lên đến 10, hãy sửa đổi chính sách như sau:
<?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>
Đã vượt quá độ dài giá trị chuỗi
Nội dung phản hồi lỗi
{ "fault": { "faultstring": "JSONThreatProtection[policy_name]: Execution failed. reason: JSONThreatProtection[policy_name]: Exceeded string value length at line line-num", "detail": { "errorcode": "steps.jsonthreatprotection.ExecutionFailed" } } }
Ví dụ về nội dung phản hồi Lỗi
{
"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"
}
}
}
Nguyên nhân
Lỗi này xảy ra nếu tải trọng thông báo đầu vào do phần tử <Source> chỉ định chứa các phần tử JSON có giá trị chứa nhiều ký tự hơn số ký tự mà phần tử <StringValueLength> cho phép.
Ví dụ: nếu phần tử <StringValueLength> được đặt thành 50 trong chính sách, nhưng tải trọng đầu vào có một hoặc nhiều phần tử có giá trị chứa hơn 50 ký tự, thì lỗi này sẽ xảy ra.
Chẩn đoán
Kiểm tra thông báo lỗi để xác định tên chính sách và số dòng mà độ dài chuỗi vượt quá. Trong ví dụ sau, tên chính sách là
JSON-Threat-Protection-1 andline trong tải trọng3.JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded string value length at line 3Ghi lại giá trị được chỉ định cho phần tử
<StringValueLength>trong (được xác định ở Bước 1).Trong ví dụ về chính sách JSONThreatProtection sau đây,
<StringValueLength>được đặt thành50:<?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>Kiểm tra số dòng cụ thể (được xác định ở Bước 1) của tải trọng đầu vào và kiểm tra xem độ dài của giá trị có lớn hơn số ký tự được chỉ định cho phần tử
<StringValueLength>(được xác định ở Bước 2) hay không. Nếu độ dài của giá trị vượt quá giới hạn, thì đó là nguyên nhân gây ra lỗi.Sau đây là ví dụ về tải trọng đầu vào:
{ "Country": "New Zealand", "Place Name": "Taumatawhakatangihangakoauauotamateaturipukakapikimaungahoronukupokaiwhenuakitanatahu" }Tải trọng JSON ở trên có một đối tượng tên là
Place Namecó giá trịTaumatawhakatangihangakoauauotamateaturipukakapikimaungahoronukupokaiwhenuakitanatahugồm 85 ký tự ở dòng 3. Vì độ dài của giá trị lớn hơn 50, giá trị được chỉ định trong phần tử<StringValueLength>, nên bạn sẽ gặp lỗi sau:JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded string value length at line 3
Độ phân giải
Nếu chính sách JSONThreatProtection nhằm mục đích bảo vệ chống lại các tải trọng có giá trị vượt quá độ dài chuỗi cụ thể, thì thông báo lỗi sẽ xuất hiện. Trong trường hợp này, bạn không cần làm gì thêm.
Tuy nhiên, nếu bạn xác định rằng có thể chỉ định độ dài giá trị dài hơn trong tải trọng, hãy sửa đổi <StringValueLength> thành một giá trị phù hợp dựa trên yêu cầu của bạn.
Ví dụ: Nếu bạn cho rằng bạn có thể cho phép giá trị có độ dài tối đa là 90, thì hãy sửa đổi chính sách như sau:
<?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>
Không phải là đối tượng JSON hợp lệ
Nội dung phản hồi lỗi
{ "fault": { "faultstring": "JSONThreatProtection[policy_name]: Execution failed. reason: string: at line line-num", "detail": { "errorcode": "steps.jsonthreatprotection.ExecutionFailed" } } }
Ví dụ về nội dung phản hồi Lỗi
{
"fault": {
"faultstring": "JSONThreatProtection[JSON-Threat-Protection-1]:
Execution failed. reason: Expecting : at line 3",
"detail": {
"errorcode": "steps.jsonthreatprotection.ExecutionFailed"
}
}
}
Nguyên nhân
Lỗi này xảy ra nếu tải trọng thông báo đầu vào do phần tử <Source> chỉ định trong chính sách JSONThreatProtection không phải là một đối tượng JSON hợp lệ.
Chẩn đoán
Kiểm tra thông báo lỗi để xác định tên chính sách và số dòng nơi xảy ra lỗi. Trong ví dụ sau, tên chính sách là
JSON-Threat-Protection-1 andline trong tải trọng2.JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: Expecting : at line 3Kiểm tra số dòng cụ thể (được xác định ở Bước 1) của tải trọng đầu vào và kiểm tra xem đối tượng JSON được truyền trong tải trọng có thực sự là một đối tượng JSON hợp lệ hay không.
Sau đây là ví dụ về tải trọng đầu vào:
{ "Longitude": 6.11499, "Latitude" 50.76891 }Trong tải trọng JSON ở trên, dòng 3 không có
":"(dấu hai chấm). Vì đây không phải là một đối tượng JSON hợp lệ, nên bạn sẽ gặp lỗi:JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: Expecting : at line 3
Độ phân giải
Đảm bảo rằng một tải trọng JSON đầu vào hợp lệ được truyền đến mọi API Proxy có chứa chính sách JSONThreatProtection.
Đối với ví dụ được mô tả ở trên, hãy sửa đổi tải trọng JSON như sau:
{
"Longitude": 6.11499,
"Latitude" : 50.76891
}
SourceUnavailable
Mã lỗi
steps.jsonthreatprotection.SourceUnavailable
Nội dung phản hồi lỗi
{ "fault": { "faultstring": "JSONThreatProtection[policy_name]:: Source[var_name] is not available" "detail": { "errorcode": "steps.jsonthreatprotection.SourceUnavailable" } } }
Ví dụ về nội dung phản hồi Lỗi
{
"fault": {
"faultstring": "JSONThreatProtection[JSON-Threat-Protection-1]::
Source requests is not available",
"detail": {
"errorcode": "steps.jsonthreatprotection.SourceUnavailable"
}
}
}
Nguyên nhân
Lỗi này xảy ra nếu biến message được chỉ định trong phần tử <Source> của chính sách JSONThreatProtection là:
- Ngoài phạm vi (không có trong quy trình cụ thể nơi chính sách đang được thực thi)
- Không phải là một trong các giá trị hợp lệ
request,responsehoặcmessage
Ví dụ: lỗi này xảy ra nếu phần tử <Source> trong chính sách được đặt thành một biến không tồn tại trong luồng mà chính sách được thực thi.
Chẩn đoán
Xác định tên chính sách và tên của biến Nguồn trong thông báo lỗi. Ví dụ: trong thông báo lỗi sau, tên chính sách là
JSON-Threat-Protection-1và biến Nguồn làrequests:JSONThreatProtection[JSON-Threat-Protection-1]:: Source requests is not availableKiểm tra giá trị được chỉ định cho phần tử
<Source>được xác định ở Bước 1.Trong ví dụ về chính sách JSONThreatProtection sau đây, phần tử
<Source>được đặt thànhrequests.<?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>Các giá trị hợp lệ cho phần tử
<Source>làrequest,responsehoặcmessage. Vì yêu cầu không phải là giá trị hợp lệ và không tồn tại trong quy trình mà chính sách đang được thực thi, nên bạn sẽ gặp lỗi:JSONThreatProtection[JSON-Threat-Protection-1]:: Source requests is not available
Độ phân giải
Đảm bảo rằng biến được đặt trong phần tử <Source> của chính sách JSONThreatProtection không thành công được đặt thành request, response hoặc message và tồn tại trong luồng mà chính sách thực thi.
Để sửa chính sách JSONThreatProtection trong ví dụ nêu trên, bạn có thể sửa đổi phần tử <Source> để sử dụng biến request, vì biến này có trong quy trình yêu cầu:
<?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
Mã lỗi
steps.jsonthreatprotection.NonMessageVariable
Nội dung phản hồi lỗi
{ "fault": { "faultstring": "JSONThreatProtection[policy_name]: Variable var_name does not resolve to a Message" "detail": { "errorcode": "steps.jsonthreatprotection.NonMessageVariable" } } }
Ví dụ về nội dung phản hồi Lỗi
{
"fault": {
"faultstring": "JSONThreatProtection[JSON-Threat-Protection-1]:
Variable message.content does not resolve to a Message",
"detail": {
"errorcode": "steps.jsonthreatprotection.NonMessageVariable"
}
}
}
Nguyên nhân
Lỗi này xảy ra nếu phần tử <Source> trong chính sách JSONThreatProtection được đặt thành một biến không thuộc loại message.
Các biến thuộc loại thông báo đại diện cho toàn bộ yêu cầu và phản hồi HTTP. Yêu cầu, phản hồi và thông báo về các biến luồng Apigee Edge tích hợp sẵn thuộc loại thông báo. Để tìm hiểu thêm về các biến thông báo, hãy xem Tài liệu tham khảo về biến.
Chẩn đoán
Xác định tên chính sách JSONThreatProtection và tên của biến Nguồn trong thông báo lỗi. Ví dụ: trong thông báo lỗi sau, tên chính sách là
JSON-Threat-Protection-1và biến Nguồn làmessage.content:JSONThreatProtection[JSON-Threat-Protection-1]: Variable message.content does not resolve to a MessageKiểm tra phần tử
<Source>của chính sách JSONThreatProtection (được xác định ở Bước 1).Trong ví dụ về chính sách JSONThreatProtection sau đây,
<Source>được đặt thànhmessage.contentthay vì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>Vì
message.contentkhông thuộc loại thông báo, nên bạn sẽ gặp lỗi:JSONThreatProtection[JSON-Threat-Protection-1]: Variable message.content does not resolve to a Message
Độ phân giải
Đảm bảo rằng phần tử <Source> trong chính sách JSONThreatProtection không thành công được đặt thành biến luồng thuộc loại message có trong luồng mà chính sách thực thi.
Để điều chỉnh chính sách, bạn có thể sửa đổi phần tử <Source> để chỉ định một biến thuộc loại thông báo. Ví dụ: trong JSONThreatProtection không thành công, bạn có thể chỉ định phần tử <Source> là 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>