คุณกำลังดูเอกสารประกอบของ Apigee Edge
ไปที่เอกสารประกอบของ
Apigee X info
ลักษณะปัญหา
แอปพลิเคชันไคลเอ็นต์จะได้รับรหัสสถานะ 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
การส่งข้อมูลแบบฟอร์ม
- Content-Type: 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 สำหรับอักขระเครื่องหมายเปอร์เซ็นต์ (%)
- หากขนาดของข้อมูลแบบฟอร์มมีขนาดเล็ก ระบบจะส่งข้อมูลเป็นคู่คีย์-ค่าโดยมีข้อมูลต่อไปนี้
- Content-Type: multipart/form-data
หากต้องการส่งข้อมูลไบนารีหรือข้อความจํานวนมากที่มีอักขระที่ไม่ใช่ ASCII คุณสามารถส่งข้อมูลด้วย
Content-Type:multipart/form-data ตามที่อธิบายไว้ใน Forms - Section 17.13.4.2
สาเหตุที่เป็นไปได้
ข้อผิดพลาดนี้จะเกิดขึ้นก็ต่อเมื่อเป็นไปตามเงื่อนไขต่อไปนี้ทั้งหมด
- คำขอ HTTP ที่ไคลเอ็นต์ส่งไปยัง Apigee Edge มีข้อมูลต่อไปนี้
Content-Type: application/x-www-form-urlencodedและ- ข้อมูลแบบฟอร์มที่มีเครื่องหมายเปอร์เซ็นต์ (
%) หรือเครื่องหมายเปอร์เซ็นต์ (%) ตามด้วยอักขระเลขฐาน 16 ที่ไม่ถูกต้องซึ่งไม่อนุญาตตาม แบบฟอร์ม - ส่วนที่ 17.13.4.1
พร็อกซี API ใน Apigee Edge จะอ่านพารามิเตอร์แบบฟอร์มที่เฉพาะเจาะจงซึ่งมีอักขระใดๆ ที่ไม่อนุญาตให้ใช้ในโฟลว์คำขอโดยใช้นโยบาย ExtractVariables หรือ AssignMessage
เช่น หากข้อมูลแบบฟอร์มมีเครื่องหมายเปอร์เซ็นต์ (
%) ตามที่เป็น (โดยไม่มี การเข้ารหัส) หรือมีเครื่องหมายเปอร์เซ็นต์ (%) ตามด้วยอักขระฐานสิบหกที่ไม่ถูกต้อง ในคีย์และ/หรือค่า คุณจะได้รับข้อผิดพลาดนี้สาเหตุที่เป็นไปได้สำหรับข้อผิดพลาดนี้มีดังนี้
สาเหตุ คำอธิบาย วิธีการแก้ปัญหาที่ใช้ได้กับ พารามิเตอร์แบบฟอร์มในคำขอมีอักขระที่ไม่อนุญาต พารามิเตอร์แบบฟอร์มที่ส่งเป็นส่วนหนึ่งของคำขอ HTTP โดยไคลเอ็นต์มีอักขระ ซึ่งไม่อนุญาตให้ใช้ ผู้ใช้ Edge Public และ Private Cloud
ขั้นตอนการวินิจฉัยที่พบบ่อย
ใช้เครื่องมือ/เทคนิคอย่างใดอย่างหนึ่งต่อไปนี้เพื่อวินิจฉัยข้อผิดพลาดนี้
การตรวจสอบ API
วิธีวินิจฉัยข้อผิดพลาดโดยใช้การตรวจสอบ API
- ลงชื่อเข้าใช้ UI ของ Apigee Edge ในฐานะผู้ใช้ที่มี บทบาทที่เหมาะสม
เปลี่ยนไปใช้องค์กรที่คุณต้องการตรวจสอบปัญหา
- ไปที่หน้าวิเคราะห์ > การตรวจสอบ API > ตรวจสอบ
- เลือกกรอบเวลาที่เฉพาะเจาะจงซึ่งคุณพบข้อผิดพลาด
พล็อตรหัสข้อบกพร่องเทียบกับเวลา
เลือกเซลล์ที่มีรหัสข้อบกพร่อง
protocol.http.BadFormDataดังที่ แสดงด้านล่าง
ข้อมูลเกี่ยวกับรหัสข้อบกพร่อง
protocol.http.BadFormDataจะ แสดงดังที่แสดงด้านล่าง
คลิกดูบันทึก แล้วขยายแถวสำหรับคำขอที่ไม่สำเร็จ
- จากหน้าต่างบันทึก ให้จดรายละเอียดต่อไปนี้
- รหัสสถานะ:
500 - แหล่งที่มาของข้อผิดพลาด:
proxy - รหัสข้อบกพร่อง:
protocol.http.BadFormData - นโยบายข้อบกพร่อง:
extractvariables/EV-ExtractFormParams
- รหัสสถานะ:
- หากแหล่งที่มาของข้อผิดพลาดคือ
proxy, รหัสข้อผิดพลาดคือprotocol.http.BadFormDataและนโยบายข้อผิดพลาดไม่ว่างเปล่า แสดงว่า ข้อผิดพลาดเกิดขึ้นขณะที่นโยบายที่ระบุในนโยบายข้อผิดพลาดกำลังอ่านหรือ ดึงข้อมูลแบบฟอร์ม (พารามิเตอร์แบบฟอร์ม) ซึ่งมีอักขระที่ไม่อนุญาตให้ใช้ - ในตัวอย่างนี้ X-Apigee-fault-policy คือ
extractvariables/EV- ExtractFormParams,ซึ่งหมายความว่านโยบาย ExtractVariables ที่ชื่อ EV-ExtractFormParams ทำงานไม่สำเร็จขณะอ่านหรือแยกพารามิเตอร์ ของแบบฟอร์ม
เครื่องมือติดตาม
วิธีวิเคราะห์ข้อผิดพลาดโดยใช้เครื่องมือติดตาม
- เปิดใช้เซสชันการติดตาม
และรายการใดรายการหนึ่งต่อไปนี้
- รอให้เกิดข้อผิดพลาด
500 Internal Server Errorหรือ - หากทำให้เกิดปัญหาซ้ำได้ ให้ทำการเรียก API เพื่อทำให้เกิดปัญหาซ้ำ
500 Internal Server Error
- รอให้เกิดข้อผิดพลาด
ตรวจสอบว่าได้เปิดใช้แสดง FlowInfo ทั้งหมดแล้ว
- เลือกคำขอที่ล้มเหลวรายการใดรายการหนึ่ง แล้วตรวจสอบการติดตาม
- ไปยังส่วนต่างๆ ของการติดตาม และค้นหาตำแหน่งที่เกิดข้อผิดพลาด
โดยปกติคุณจะเห็นข้อผิดพลาดในนโยบายข้อใดข้อหนึ่งตามที่แสดงด้านล่าง
ในตัวอย่างการติดตามด้านบน โปรดทราบว่าความล้มเหลวเกิดขึ้นในนโยบาย ExtractVariables ที่ชื่อ
EV-ExtractFormParamsไปที่โฟลว์ชื่อ Error หลังจากนโยบายที่เฉพาะเจาะจงซึ่งล้มเหลว
- โปรดจดค่าต่อไปนี้จากร่องรอย
ข้อผิดพลาด:
Bad Form Datastate:
PROXY_REQ_FLOWerror.class:
com.apigee.rest.framework.BadRequestException- ค่าของข้อผิดพลาด
Bad Form Dataแสดงว่าพารามิเตอร์ของแบบฟอร์ม มีอักขระบางตัวที่ไม่อนุญาตให้ใช้ - ค่าของสถานะ
PROXY_REQ_FLOW,บ่งชี้ว่า เกิดข้อผิดพลาดในโฟลว์คำขอของพร็อกซี API
- ค่าของข้อผิดพลาด
- ไปที่เฟส AX (บันทึกข้อมูลวิเคราะห์) ในการติดตาม แล้วคลิก เฟส
เลื่อนลงไปที่ส่วนรายละเอียดระยะ - ส่วนหัวของข้อผิดพลาด แล้ว กำหนดค่าของ 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.BadFormDataX-Apigee-fault-source policyX-Apigee-fault-policy extractvariables/EV-ExtractFormParams- ในตัวอย่างนี้ X-Apigee-fault-policy คือ
extractvariables/EV- ExtractFormParams,ซึ่งหมายความว่านโยบาย ExtractVariables ที่ชื่อ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.BadFormDataX-Apigee-fault-source policyX-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 คือ
extractvariables/EV- ExtractFormParams,ซึ่งหมายความว่านโยบาย ExtractVariables ที่ชื่อEV-ExtractFormParamsล้มเหลวขณะอ่านพารามิเตอร์ ของแบบฟอร์ม
สาเหตุ: พารามิเตอร์แบบฟอร์มในคำขอมีอักขระที่ไม่อนุญาต
การวินิจฉัย
- กำหนดรหัสข้อผิดพลาด แหล่งที่มาของข้อผิดพลาด และนโยบายข้อผิดพลาดสำหรับ
500 Internal Server Errorโดยใช้การตรวจสอบ API, เครื่องมือติดตาม หรือบันทึกการเข้าถึง NGINX ตามที่อธิบายไว้ ในขั้นตอนการวินิจฉัยทั่วไป - หากรหัสข้อผิดพลาดเป็น
protocol.http.BadFormDataแหล่งที่มาของข้อผิดพลาดมีค่าproxyหรือpolicyและนโยบายข้อผิดพลาดไม่ใช่ค่าว่าง แสดงว่านโยบายที่ระบุในนโยบายข้อผิดพลาดล้มเหลวขณะอ่านหรือแยกข้อมูลแบบฟอร์ม (พารามิเตอร์แบบฟอร์ม) - อ่านนโยบายที่ระบุไว้ในนโยบายข้อบกพร่องและพิจารณาข้อมูลต่อไปนี้
- แหล่งที่มา: ระบุว่านโยบายกำลังอ่านหรือดึงข้อมูลจากคำขอหรือคำตอบ
- พารามิเตอร์ของแบบฟอร์ม: ระบุพารามิเตอร์ของแบบฟอร์มที่เฉพาะเจาะจงซึ่งอ่านได้ในนโยบาย
ตัวอย่างที่ 1
ตัวอย่างที่ 1: นโยบาย ExtractVariables ที่ดึงพารามิเตอร์แบบฟอร์ม
<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>ในนโยบาย ExtractVariables ด้านบน
แหล่งที่มา:
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>
ในนโยบาย ExtractVariables ด้านบน
แหล่งที่มา:
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มีเครื่องหมายเปอร์เซ็นต์ (%) ตามด้วย อักขระฐาน 16ZYที่ไม่ถูกต้องตัวอย่าง #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# จะแทนที่ด้วย ค่าจริง
บันทึกของระบบ Message Processor
/opt/apigee/var/log/edge-message-processor/logs/system.log