คุณกำลังดูเอกสารประกอบของ Apigee Edge
ไปที่เอกสารประกอบของ Apigee X ข้อมูล
ลักษณะปัญหา
แอปพลิเคชันไคลเอ็นต์จะได้รับรหัสสถานะ HTTP เป็น 500 Internal Server Error
พร้อมรหัสข้อผิดพลาด protocol.http.BadFormData
เป็นการตอบกลับสำหรับการเรียก API
ข้อความแสดงข้อผิดพลาด
แอปพลิเคชันไคลเอ็นต์จะได้รับโค้ดตอบกลับต่อไปนี้
HTTP/1.1 500 Internal Server Error
นอกจากนี้ คุณอาจพบข้อความแสดงข้อผิดพลาดต่อไปนี้
{ "fault":{ "faultstring":"Bad Form Data", "detail":{ "errorcode":"protocol.http.BadFormData" } } }
ข้อมูลฟอร์ม
ก่อนที่จะลงลึกรายละเอียดของการแก้ปัญหานี้ เรามาทำความเข้าใจกันก่อนว่าข้อมูลในแบบฟอร์มคืออะไร
ข้อมูลแบบฟอร์มคือข้อมูลที่ได้จากผู้ใช้โดยทั่วไปผ่านแบบฟอร์ม HTML ที่มีองค์ประกอบต่างๆ เช่น ช่องป้อนข้อความ ปุ่ม หรือช่องทำเครื่องหมาย โดยทั่วไปแล้ว ระบบจะส่งข้อมูลฟอร์มเป็นชุดคู่คีย์-ค่าเป็นส่วนหนึ่งของคำขอหรือการตอบกลับ HTTP
การส่งข้อมูลแบบฟอร์ม
- ประเภทเนื้อหา: application/x-www-form-urlencoded
- หากข้อมูลแบบฟอร์มมีขนาดเล็ก ระบบจะส่งข้อมูลเป็นคู่คีย์-ค่าด้วยข้อมูลต่อไปนี้
- อักขระในทั้ง 2 คีย์ที่เข้ารหัสตามกฎที่อธิบายใน แบบฟอร์ม - ส่วนที่ 17.13.4.1
- ส่วนหัว
Content-Type: application/x-www-form-urlencoded
ตัวอย่างคำขอที่มีข้อมูลในแบบฟอร์ม
curl https://HOSTALIAS/somepath -H "Content-Type: application/x-www-form-urlencoded" -d "username=abc@google.com&pasword=secret123"
- อักขระที่ไม่ใช่ตัวอักษรและตัวเลขคละกันทั้งในคีย์และค่าจะได้รับการ
เข้ารหัสเปอร์เซ็นต์ กล่าวคืออักขระเหล่านั้นแสดงเป็น 3 ตัวตัวอักษร
%HH
ซึ่งประกอบด้วยเครื่องหมายเปอร์เซ็นต์ตามด้วยเลขฐานสิบหก 2 หลักที่แสดงรหัส ASCII ของอักขระที่เจาะจง - ดังนั้นแม้ว่าจะอนุญาตให้ใช้เครื่องหมายเปอร์เซ็นต์ (
%
) ในข้อมูลแบบฟอร์ม แต่ระบบก็ตีความว่าเป็นจุดเริ่มต้นของลำดับหลีกพิเศษ ดังนั้น หากข้อมูลในแบบฟอร์มต้องมีเครื่องหมายเปอร์เซ็นต์ (%
) ในคีย์หรือค่า คุณควรส่งข้อมูลเป็น%25,
ซึ่งแทนรหัส ASCII สำหรับอักขระเครื่องหมายเปอร์เซ็นต์ (%
)
- หากข้อมูลแบบฟอร์มมีขนาดเล็ก ระบบจะส่งข้อมูลเป็นคู่คีย์-ค่าด้วยข้อมูลต่อไปนี้
- ประเภทเนื้อหา: หลายส่วน/form-data
หากต้องการส่งข้อมูลไบนารีหรือข้อความจำนวนมากที่มีอักขระที่ไม่ใช่ ASCII คุณอาจส่งข้อมูลด้วย
Content-Type:
หลายส่วน/แบบฟอร์ม-ข้อมูลตามที่อธิบายไว้ใน ฟอร์ม - ส่วนที่ 17.13.4.2
สาเหตุที่เป็นไปได้
ข้อผิดพลาดนี้จะเกิดขึ้นในกรณีที่ตรงกับเงื่อนไขต่อไปนี้ทั้งหมดเท่านั้น
- คำขอ HTTP ที่ไคลเอ็นต์ส่งไปยัง Apigee Edge มีดังนี้
Content-Type: application/x-www-form-urlencoded
และ- ข้อมูลในแบบฟอร์มที่มีเครื่องหมายเปอร์เซ็นต์ (
%
) หรือเครื่องหมายเปอร์เซ็นต์ (%
) ตามด้วยอักขระฐานสิบหกที่ไม่ถูกต้องซึ่งไม่ได้รับอนุญาตตาม แบบฟอร์ม - ส่วนที่ 17.13.4.1
พร็อกซี API ใน Apigee Edge จะอ่านพารามิเตอร์ของแบบฟอร์มที่เฉพาะเจาะจงซึ่งมีอักขระที่ไม่ได้รับอนุญาตให้ใช้ในขั้นตอนการส่งคำขอโดยใช้ ExtractVariable หรือนโยบาย AssignMessage
เช่น หากข้อมูลในแบบฟอร์มมีเครื่องหมายเปอร์เซ็นต์ (
%
) ตามที่เป็น (ไม่มีการเข้ารหัส) หรือเครื่องหมายเปอร์เซ็นต์ (%
) ตามด้วยอักขระฐานสิบหกที่ไม่ถูกต้องในคีย์และ/หรือค่า คุณจะได้รับข้อผิดพลาดนี้สาเหตุที่เป็นไปได้ของข้อผิดพลาดนี้มีดังนี้
สาเหตุ คำอธิบาย วิธีการแก้ปัญหาที่ใช้กับ พารามิเตอร์แบบฟอร์มในคำขอมีอักขระที่ไม่อนุญาต พารามิเตอร์แบบฟอร์มที่ส่งผ่านในฐานะส่วนหนึ่งของคำขอ HTTP โดยไคลเอ็นต์มีอักขระที่ไม่ได้รับอนุญาตให้ใช้ ผู้ใช้ Edge Public และ Private Cloud
ขั้นตอนการวินิจฉัยทั่วไป
ใช้เครื่องมือ/เทคนิคอย่างใดอย่างหนึ่งต่อไปนี้เพื่อวิเคราะห์ข้อผิดพลาดนี้
การตรวจสอบ API
วิธีวินิจฉัยข้อผิดพลาดโดยใช้ API Monitoring
- ลงชื่อเข้าใช้ UI ของ Apigee Edge ในฐานะผู้ใช้ที่มีบทบาทที่เหมาะสม
เปลี่ยนเป็นองค์กรที่คุณต้องการตรวจสอบปัญหา
- ไปที่หน้าวิเคราะห์ > การตรวจสอบ API > ตรวจสอบ
- เลือกกรอบเวลาเฉพาะที่คุณพบข้อผิดพลาด
พล็อตโค้ดข้อผิดพลาดเทียบกับเวลา
เลือกเซลล์ที่มีรหัสข้อผิดพลาด
protocol.http.BadFormData
ดังที่แสดงด้านล่างข้อมูลเกี่ยวกับรหัสข้อผิดพลาด
protocol.http.BadFormData
จะแสดงอยู่ดังที่แสดงด้านล่างคลิกดูบันทึกแล้วขยายแถวสําหรับคําขอที่ล้มเหลว
- ดูรายละเอียดต่อไปนี้จากหน้าต่าง Logs
- รหัสสถานะ:
500
- แหล่งที่มาของข้อผิดพลาด:
proxy
- รหัสข้อผิดพลาด:
protocol.http.BadFormData
- นโยบายข้อผิดพลาด:
extractvariables/EV-ExtractFormParams
- รหัสสถานะ:
- หากแหล่งที่มาของข้อผิดพลาดคือ
proxy
โค้ดข้อผิดพลาดคือprotocol.http.BadFormData
และนโยบายข้อผิดพลาดต้องไม่ว่างเปล่า จะบ่งชี้ว่าข้อผิดพลาดนั้นเกิดขึ้นในขณะที่นโยบายที่เจาะจงซึ่งระบุไว้ในนโยบายข้อผิดพลาดกำลังอ่านหรือแตกข้อมูลแบบฟอร์ม (พารามิเตอร์แบบฟอร์ม) ซึ่งมีอักขระที่ไม่ได้รับอนุญาตให้ใช้ - ในตัวอย่างนี้ X-Apigee-fault-policy คือ
extractvariables/EV- ExtractFormParams,
ซึ่งหมายความว่านโยบาย ExtractVariant ที่ชื่อ EV-ExtractFormParams ดำเนินการไม่สำเร็จขณะอ่านหรือแตกข้อมูลพารามิเตอร์ของฟอร์ม
เครื่องมือการติดตาม
วิธีวินิจฉัยข้อผิดพลาดโดยใช้เครื่องมือติดตาม
- เปิดใช้เซสชันการติดตาม
และเลือกดำเนินการอย่างใดอย่างหนึ่งต่อไปนี้
- รอจนกว่าจะเกิดข้อผิดพลาด
500 Internal Server Error
หรือ - หากทำให้ปัญหาเกิดซ้ำได้ ให้เรียก API เพื่อจำลองปัญหา
500 Internal Server Error
- รอจนกว่าจะเกิดข้อผิดพลาด
ตรวจสอบว่าเปิดใช้ Show FlowInfos ทั้งหมดแล้ว โดยทำดังนี้
- เลือกคำขอที่ล้มเหลว 1 รายการและตรวจสอบการติดตาม
- ไปยังระยะต่างๆ ของการติดตามและค้นหาตำแหน่งที่ความล้มเหลวเกิดขึ้น
โดยทั่วไปแล้ว คุณจะพบข้อผิดพลาดในนโยบายอย่างใดอย่างหนึ่งต่อไปนี้
ในการติดตามตัวอย่างด้านบน โปรดทราบว่าเกิดข้อผิดพลาดในนโยบาย ExtractVariable ชื่อ
EV-ExtractFormParams
ไปที่ขั้นตอนที่ชื่อ Error หลังนโยบายเฉพาะที่ดำเนินการไม่สำเร็จ ดังนี้
- จดจำค่าต่อไปนี้จากการติดตาม
ข้อผิดพลาด:
Bad Form Data
รัฐ:
PROXY_REQ_FLOW
error.class:
com.apigee.rest.framework.BadRequestException
- ค่าของข้อผิดพลาด
Bad Form Data
บ่งบอกว่าพารามิเตอร์แบบฟอร์มมีอักขระบางตัวที่ไม่ได้รับอนุญาตให้ใช้ - ค่าสถานะ
PROXY_REQ_FLOW,
บ่งบอกว่าเกิดข้อผิดพลาดในโฟลว์คำขอของพร็อกซี API
- ค่าของข้อผิดพลาด
- ไปที่เฟส AX (บันทึกข้อมูล Analytics) ในการติดตาม แล้วคลิกค่านี้
เลื่อนลงไปที่ส่วน Phase Details - Error Headers และระบุค่าของ X-Apigee-fault-code, X-Apigee-fault-source และ X-Apigee-fault-policy ตามที่แสดงด้านล่าง
โปรดทราบว่าค่าของ X-Apigee-fault-code และ X-Apigee-fault-source คือ
protocol.http.BadFormData
และpolicy
ตามลำดับ และ X-Apigee-fault-policy จะไม่ว่างเปล่า ซึ่งหมายความว่าข้อผิดพลาดเกิดขึ้นขณะที่นโยบายที่ระบุไว้ใน X-Apigee-fault-policy กำลังอ่านหรือแยกข้อมูลแบบฟอร์ม (พารามิเตอร์แบบฟอร์ม) ซึ่งมีอักขระที่ไม่ได้รับอนุญาตให้ใช้ส่วนหัวการตอบกลับ ค่า X-Apigee-fault-code protocol.http.BadFormData
X-Apigee-fault-source policy
X-Apigee-fault-policy extractvariables/EV-ExtractFormParams
- ในตัวอย่างนี้ X-Apigee-fault-policy คือ
extractvariables/EV- ExtractFormParams,
ซึ่งหมายความว่านโยบาย ExtractVariable ชื่อEV-ExtractFormParams
ล้มเหลวขณะอ่านหรือแตกข้อมูลพารามิเตอร์ของฟอร์ม
NGINX
วิธีวินิจฉัยข้อผิดพลาดโดยใช้บันทึกการเข้าถึง NGINX
- หากเป็นผู้ใช้ Private Cloud คุณจะใช้บันทึกการเข้าถึง NGINX เพื่อระบุข้อมูลสำคัญเกี่ยวกับ HTTP
500 Internal Server Error
ได้ ตรวจสอบบันทึกการเข้าถึง NGINX ดังนี้
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log
- ค้นหาเพื่อดูว่ามีข้อผิดพลาด
500
ที่มีรหัสข้อผิดพลาดprotocol.http.BadFormData
ในช่วงเวลาที่ระบุหรือไม่ (หากปัญหาเกิดขึ้นในอดีต) หรือมีคำขอใดที่ยังคงล้มเหลวด้วย500
หากพบข้อผิดพลาด
500
ที่มี X-Apigee-fault-code ตรงกับค่าของprotocol.http.BadFormData
ให้ระบุค่าของ X-Apigee-fault-source และ X-Apigee-fault-policyตัวอย่างข้อผิดพลาด 500 จากบันทึกการเข้าถึง NGINX
ตัวอย่างรายการด้านบนจากบันทึกการเข้าถึง NGINX มีค่าต่อไปนี้สำหรับ X-Apigee-fault-code และ X-Apigee-fault-source
ส่วนหัว ค่า X-Apigee-fault-code protocol.http.BadFormData
X-Apigee-fault-source policy
X-Apigee-fault-policy extractvariables/EV-ExtractFormParams
- โปรดทราบว่าค่าของ X-Apigee-fault-code, X-Apigee-fault-source คือ
protocol.http.BadFormData
policy
ตามลำดับ และ X-Apigee-fault-policy ต้องไม่ว่างเปล่า ซึ่งหมายความว่าข้อผิดพลาดเกิดขึ้นขณะที่นโยบายที่ระบุไว้ใน X-Apigee-fault-policy, กำลังอ่านหรือแยกข้อมูลแบบฟอร์ม (พารามิเตอร์ของแบบฟอร์ม) ซึ่งมีอักขระที่X-Apigee-fault-policy,ให้ใช้ - ในตัวอย่างนี้ X-Apigee-fault-policy คือ
extractvariables/EV- ExtractFormParams,
ซึ่งหมายความว่านโยบาย ExtractVariable ชื่อEV-ExtractFormParams
ล้มเหลวขณะอ่านพารามิเตอร์ของฟอร์ม
สาเหตุ: พารามิเตอร์แบบฟอร์มในคำขอมีอักขระที่ไม่อนุญาตให้ใช้
การวินิจฉัย
- กำหนดFault Code, Fault Source และนโยบาย Fault สำหรับ
500 Internal Server Error
โดยใช้การตรวจสอบ API, เครื่องมือ Trace หรือบันทึกการเข้าถึง NGINX ตามที่อธิบายไว้ในขั้นตอนการวินิจฉัยทั่วไป - หาก Fault Code คือ
protocol.http.BadFormData
, Fault Source มีค่าproxy
หรือpolicy
และ Fault Policy ไม่ว่างเปล่า นั่นหมายความว่านโยบายที่ระบุในนโยบายข้อผิดพลาดล้มเหลวขณะอ่านหรือดึงข้อมูลแบบฟอร์ม (พารามิเตอร์ของฟอร์ม) - อ่านนโยบายที่ระบุในนโยบายข้อผิดพลาดและระบุข้อมูลต่อไปนี้
- แหล่งที่มา: ระบุว่านโยบายกำลังอ่านหรือดึงข้อมูลจากคำขอหรือการตอบกลับ
- พารามิเตอร์แบบฟอร์ม: กำหนดพารามิเตอร์แบบฟอร์มที่เฉพาะเจาะจงที่กำลังอ่านในนโยบาย
ตัวอย่าง #1
ตัวอย่างที่ 1: การแยกตัวแปรของนโยบายการแยกตัวแปรของพารามิเตอร์ของแบบฟอร์ม:
<ExtractVariables name="EV-ExtractFormParms"> <DisplayName>EV-ExtractFormParams</DisplayName> <Source>request</Source> <FormParam name="username"> <Pattern ignoreCase="false">{username}</Pattern> </FormParam> <FormParam name="password"> <Pattern ignoreCase="false">{password}</Pattern> </FormParam> <VariablePrefix>forminfo</VariablePrefix> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> </ExtractVariables>
ในนโยบาย ExtractVariable ข้างต้น:
ที่มา:
request
องค์ประกอบนี้สังเกตได้จากองค์ประกอบ
<Source>
พารามิเตอร์แบบฟอร์ม:
username
และpassword
กรณีนี้จะระบุโดยองค์ประกอบ
<Pattern>
ภายในองค์ประกอบ<FormParam>
ซึ่งระบุว่าพารามิเตอร์แบบฟอร์ม
username
และ/หรือpassword
ที่ไคลเอ็นต์ส่งผ่านคำขอ HTTP ไปยัง Apigee Edge มีอักขระที่ไม่ได้รับอนุญาตให้ใช้ตัวอย่าง #2
ตัวอย่างที่ 2: พารามิเตอร์แบบฟอร์มการคัดลอกนโยบาย AssignMessage
<AssignMessage continueOnError="false" enabled="true" name="AM-CopyFormParams"> <Copy source="request"> <FormParams> <FormParam name="username"/> <FormParam name="password"/> </FormParams> </Copy> <AssignTo createNew="true" transport="http" type="request"/> </AssignMessage>
ในนโยบาย ExtractVariable ข้างต้น:
แหล่งที่มา:
request
ข้อมูลนี้ระบุโดยแอตทริบิวต์
source
ในองค์ประกอบ<Copy>
พารามิเตอร์แบบฟอร์ม:
username
และpassword
ข้อมูลนี้ระบุโดยแอตทริบิวต์
name
ในองค์ประกอบ<FormParam>
ซึ่งระบุว่าพารามิเตอร์แบบฟอร์ม
username
หรือpassword
หรือทั้ง 2 แบบซึ่งเป็นส่วนหนึ่งของคำขอ HTTP ที่ไคลเอ็นต์ส่งไปยัง Apigee Edge มีอักขระที่ไม่ได้รับอนุญาตให้ใช้
ตรวจสอบว่ามีอักขระที่ไม่ได้รับอนุญาตให้ใช้ในพารามิเตอร์แบบฟอร์มที่ระบุในขั้นตอนที่ 3 โดยใช้วิธีใดวิธีหนึ่งต่อไปนี้หรือไม่
เครื่องมือการติดตาม
วิธีตรวจสอบโดยใช้เครื่องมือติดตาม
- หากคุณได้บันทึกการติดตามสำหรับคำขอที่ล้มเหลวตามที่อธิบายไว้ในขั้นตอนการวิเคราะห์ทั่วไป ให้เลือกคำขอที่ล้มเหลวรายการใดรายการหนึ่ง
- หากคุณพิจารณาแล้วว่าพารามิเตอร์แบบฟอร์มที่มีอักขระที่ไม่ได้รับอนุญาตให้ใช้นั้นเป็นส่วนหนึ่งของคำขอ HTTP ในขั้นตอนที่ 3 ข้างต้น
- ไปที่ขั้นตอนคำขอที่ได้รับจากไคลเอ็นต์
เลื่อนลงไปที่ส่วนรายละเอียดระยะ และตรวจสอบเนื้อหาคำขอ
- ในตัวอย่างข้างต้น โปรดทราบว่าพารามิเตอร์ของฟอร์ม
password
มีเครื่องหมายเปอร์เซ็นต์ (%
) - เนื่องจากระบบใช้เครื่องหมายเปอร์เซ็นต์ (
%
) สำหรับ การเข้ารหัสเปอร์เซ็นต์สัญลักษณ์พิเศษด้วย จึงไม่สามารถใช้เครื่องหมายนี้ตามที่เป็นอยู่ในข้อมูลแบบฟอร์ม - ดังนั้น Apigee Edge จะตอบกลับด้วย
500 Internal Server Error
ด้วยรหัสข้อผิดพลาดprotocol.http.BadFormData
คำขอจริง
วิธีตรวจสอบโดยใช้คำขอจริง
- หากคุณไม่มีสิทธิ์เข้าถึงคำขอจริงที่ส่งไปยังเซิร์ฟเวอร์เป้าหมาย ให้ไปที่การแก้ปัญหา
- หากคุณมีสิทธิ์เข้าถึงคำขอจริงที่ส่งไปยัง Apigee Edge ให้ทำตามขั้นตอนต่อไปนี้
- ตรวจสอบเนื้อหาข้อมูลในแบบฟอร์มและดูว่ามีอักขระที่ไม่ได้รับอนุญาตให้ใช้หรือไม่ เช่น เครื่องหมายเปอร์เซ็นต์ (
%
) หรือเครื่องหมายเปอร์เซ็นต์ (%
) ตามด้วยอักขระฐานสิบหกที่ไม่ถูกต้องตัวอย่าง #1
ตัวอย่างคำขอ #1: มีข้อมูลในแบบฟอร์มซึ่งเป็นส่วนหนึ่งของคำขอ
curl -X GET "https://HOSTALIAS/myproxy -H "Content-Type: application/x-www-form-urlencoded" -d "client_id=123456abc123&client_secret=c23578%ZY"
ในตัวอย่างนี้ โปรดทราบว่าองค์ประกอบ
client_secret
มีเครื่องหมายเปอร์เซ็นต์ (%
) ตามด้วยอักขระฐานสิบหกที่ไม่ถูกต้องZY
ตัวอย่าง #2
ตัวอย่างคำขอ #2: ข้อมูลแบบฟอร์มที่ส่งผ่านในไฟล์
curl -X GET "https://HOSTALIAS/myproxy -H "Content-Type: application/x-www-form-urlencoded" -d @form_data.xml
เนื้อหาของ form_data.xml:
xml=<user><username>abc1234@google.com</username><password>qwerty12345!@#$%</password></user>
ในตัวอย่างนี้ โปรดทราบว่าองค์ประกอบ
password
มีเครื่องหมายเปอร์เซ็นต์ (%
) ซึ่งไม่ควรส่งตามที่เป็นในข้อมูลแบบฟอร์ม
- ตรวจสอบเนื้อหาข้อมูลในแบบฟอร์มและดูว่ามีอักขระที่ไม่ได้รับอนุญาตให้ใช้หรือไม่ เช่น เครื่องหมายเปอร์เซ็นต์ (
- ใน 2 ตัวอย่างข้างต้น ข้อมูลแบบฟอร์มที่ส่งเป็นส่วนหนึ่งของคำขอ HTTP ไปยัง Apigee Edge มีอักขระที่ไม่ได้รับอนุญาตให้ใช้
- ดังนั้น Apigee Edge จะตอบกลับด้วย
500 Internal Server Error
ด้วยรหัสข้อผิดพลาดprotocol.http.BadFormData
ความละเอียด
- ตรวจสอบว่าสัญลักษณ์พิเศษทั้งในคีย์และค่าของข้อมูลแบบฟอร์มหรือพารามิเตอร์ที่ส่งไปเป็นส่วนหนึ่งของคำขอ HTTP โดยไคลเอ็นต์ได้รับการเข้ารหัสเสมอตามที่อธิบายไว้ใน ข้อมูลแบบฟอร์ม - application/x-www-form-urlencoded
- สำหรับตัวอย่างที่กล่าวถึงข้างต้น คุณสามารถแก้ไขปัญหาได้ดังนี้
ตัวอย่าง #1
ตัวอย่างที่ 1: ข้อมูลในแบบฟอร์มที่ส่งผ่านโดยเป็นส่วนหนึ่งของคำขอ
ใช้ อักขระฐานสิบหกที่ถูกต้องซึ่งตรงกับรหัส ASCII สำหรับอักขระที่เจาะจง ตัวอย่างเช่น หากต้องการส่งสัญลักษณ์ดอลลาร์ (
$
) ให้ใช้%24
ดังที่แสดงด้านล่างcurl -X GET "https://HOSTALIAS/myproxy -H "Content-Type: application/x-www-form-urlencoded" -d "client_id=123456abc123&client_secret=c23578%24"
ตัวอย่าง #2
ตัวอย่างคำขอ #2: ข้อมูลแบบฟอร์มที่ส่งผ่านในไฟล์
curl -X GET "https://HOSTALIAS/myproxy -H "Content-Type: application/x-www-form-urlencoded" -d @form_data.xml
เนื้อหาของ form_data.xml:
ใช้ การเข้ารหัสเปอร์เซ็นต์สำหรับเครื่องหมายเปอร์เซ็นต์ (
%
) ซึ่งจะแก้ไขไฟล์ให้มี%25
ดังที่แสดงด้านล่างxml=<user><username>abc1234@google.com</username><password>qwerty12345!!@#$%25</password></user>
ข้อมูลจำเพาะ
Apigee Edge คาดว่าจะมีการส่งข้อมูลแบบฟอร์มตามข้อกำหนดต่อไปนี้
ข้อมูลจำเพาะ |
---|
ข้อมูลแบบฟอร์ม - application/x-www-form-urlencoded |
หากยังต้องการความช่วยเหลือจากทีมสนับสนุนของ Apigee ให้ไปที่หัวข้อต้องรวบรวมข้อมูลการวินิจฉัย
ต้องรวบรวมข้อมูลการวินิจฉัย
หากปัญหายังคงอยู่แม้ว่าจะทำตามวิธีการข้างต้นแล้ว ให้รวบรวมข้อมูลการวินิจฉัยต่อไปนี้ จากนั้นติดต่อฝ่ายสนับสนุนของ Apigee Edge
หากคุณเป็นผู้ใช้ระบบคลาวด์สาธารณะ โปรดระบุข้อมูลต่อไปนี้
- ชื่อองค์กร
- ชื่อสภาพแวดล้อม
- ชื่อพร็อกซี API
- ใช้คำสั่ง
curl
เพื่อจำลอง500 Internal Server Error
ที่มีรหัสข้อผิดพลาดprotocol.http.BadFormData
- ไฟล์การติดตามสำหรับคำขอ API
หากคุณเป็นผู้ใช้ Private Cloud โปรดระบุข้อมูลต่อไปนี้
- สังเกตข้อความแสดงข้อผิดพลาดสำหรับคำขอที่ไม่สำเร็จ
- ชื่อสภาพแวดล้อม
- ชุดพร็อกซี API
- ไฟล์การติดตามสำหรับคำขอ API
บันทึกการเข้าถึง NGINX
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log
ที่ไหน จะแทนที่ ORG, ENV และ PORT# ด้วยค่าจริง
บันทึกระบบเครื่องมือประมวลผลข้อความ
/opt/apigee/var/log/edge-message-processor/logs/system.log