ข้อผิดพลาดเซิร์ฟเวอร์ภายใน 500 - BadFormData

คุณกำลังดูเอกสารประกอบของ 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

การส่งข้อมูลแบบฟอร์ม

  1. 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 สำหรับอักขระเครื่องหมายเปอร์เซ็นต์ (%)
  2. Content-Type: multipart/form-data

    หากต้องการส่งข้อมูลไบนารีหรือข้อความจํานวนมากที่มีอักขระที่ไม่ใช่ ASCII คุณสามารถส่งข้อมูลด้วย Content-Type: multipart/form-data ตามที่อธิบายไว้ใน Forms - Section 17.13.4.2

สาเหตุที่เป็นไปได้

ข้อผิดพลาดนี้จะเกิดขึ้นก็ต่อเมื่อเป็นไปตามเงื่อนไขต่อไปนี้ทั้งหมด

  1. คำขอ HTTP ที่ไคลเอ็นต์ส่งไปยัง Apigee Edge มีข้อมูลต่อไปนี้
    1. Content-Type: application/x-www-form-urlencoded และ
    2. ข้อมูลแบบฟอร์มที่มีเครื่องหมายเปอร์เซ็นต์ (%) หรือเครื่องหมายเปอร์เซ็นต์ (%) ตามด้วยอักขระเลขฐาน 16 ที่ไม่ถูกต้องซึ่งไม่อนุญาตตาม แบบฟอร์ม - ส่วนที่ 17.13.4.1
  2. พร็อกซี API ใน Apigee Edge จะอ่านพารามิเตอร์แบบฟอร์มที่เฉพาะเจาะจงซึ่งมีอักขระใดๆ ที่ไม่อนุญาตให้ใช้ในโฟลว์คำขอโดยใช้นโยบาย ExtractVariables หรือ AssignMessage

    เช่น หากข้อมูลแบบฟอร์มมีเครื่องหมายเปอร์เซ็นต์ (%) ตามที่เป็น (โดยไม่มี การเข้ารหัส) หรือมีเครื่องหมายเปอร์เซ็นต์ (%) ตามด้วยอักขระฐานสิบหกที่ไม่ถูกต้อง ในคีย์และ/หรือค่า คุณจะได้รับข้อผิดพลาดนี้

    สาเหตุที่เป็นไปได้สำหรับข้อผิดพลาดนี้มีดังนี้

    สาเหตุ คำอธิบาย วิธีการแก้ปัญหาที่ใช้ได้กับ
    พารามิเตอร์แบบฟอร์มในคำขอมีอักขระที่ไม่อนุญาต พารามิเตอร์แบบฟอร์มที่ส่งเป็นส่วนหนึ่งของคำขอ HTTP โดยไคลเอ็นต์มีอักขระ ซึ่งไม่อนุญาตให้ใช้ ผู้ใช้ Edge Public และ Private Cloud

ขั้นตอนการวินิจฉัยที่พบบ่อย

ใช้เครื่องมือ/เทคนิคอย่างใดอย่างหนึ่งต่อไปนี้เพื่อวินิจฉัยข้อผิดพลาดนี้

การตรวจสอบ API

วิธีวินิจฉัยข้อผิดพลาดโดยใช้การตรวจสอบ API

  1. ลงชื่อเข้าใช้ UI ของ Apigee Edge ในฐานะผู้ใช้ที่มี บทบาทที่เหมาะสม
  2. เปลี่ยนไปใช้องค์กรที่คุณต้องการตรวจสอบปัญหา

  3. ไปที่หน้าวิเคราะห์ > การตรวจสอบ API > ตรวจสอบ
  4. เลือกกรอบเวลาที่เฉพาะเจาะจงซึ่งคุณพบข้อผิดพลาด
  5. พล็อตรหัสข้อบกพร่องเทียบกับเวลา

  6. เลือกเซลล์ที่มีรหัสข้อบกพร่อง protocol.http.BadFormData ดังที่ แสดงด้านล่าง

    (ดูรูปภาพขนาดใหญ่ขึ้น)

  7. ข้อมูลเกี่ยวกับรหัสข้อบกพร่อง protocol.http.BadFormData จะ แสดงดังที่แสดงด้านล่าง

    (ดูรูปภาพขนาดใหญ่ขึ้น)

  8. คลิกดูบันทึก แล้วขยายแถวสำหรับคำขอที่ไม่สำเร็จ

  9. จากหน้าต่างบันทึก ให้จดรายละเอียดต่อไปนี้
    • รหัสสถานะ: 500
    • แหล่งที่มาของข้อผิดพลาด: proxy
    • รหัสข้อบกพร่อง: protocol.http.BadFormData
    • นโยบายข้อบกพร่อง: extractvariables/EV-ExtractFormParams
  10. หากแหล่งที่มาของข้อผิดพลาดคือ proxy, รหัสข้อผิดพลาดคือ protocol.http.BadFormData และนโยบายข้อผิดพลาดไม่ว่างเปล่า แสดงว่า ข้อผิดพลาดเกิดขึ้นขณะที่นโยบายที่ระบุในนโยบายข้อผิดพลาดกำลังอ่านหรือ ดึงข้อมูลแบบฟอร์ม (พารามิเตอร์แบบฟอร์ม) ซึ่งมีอักขระที่ไม่อนุญาตให้ใช้
  11. ในตัวอย่างนี้ X-Apigee-fault-policy คือ extractvariables/EV- ExtractFormParams, ซึ่งหมายความว่านโยบาย ExtractVariables ที่ชื่อ EV-ExtractFormParams ทำงานไม่สำเร็จขณะอ่านหรือแยกพารามิเตอร์ ของแบบฟอร์ม

เครื่องมือติดตาม

วิธีวิเคราะห์ข้อผิดพลาดโดยใช้เครื่องมือติดตาม

  1. เปิดใช้เซสชันการติดตาม และรายการใดรายการหนึ่งต่อไปนี้
    • รอให้เกิดข้อผิดพลาด 500 Internal Server Error หรือ
    • หากทำให้เกิดปัญหาซ้ำได้ ให้ทำการเรียก API เพื่อทำให้เกิดปัญหาซ้ำ 500 Internal Server Error
  2. ตรวจสอบว่าได้เปิดใช้แสดง FlowInfo ทั้งหมดแล้ว

  3. เลือกคำขอที่ล้มเหลวรายการใดรายการหนึ่ง แล้วตรวจสอบการติดตาม
  4. ไปยังส่วนต่างๆ ของการติดตาม และค้นหาตำแหน่งที่เกิดข้อผิดพลาด
  5. โดยปกติคุณจะเห็นข้อผิดพลาดในนโยบายข้อใดข้อหนึ่งตามที่แสดงด้านล่าง

    ในตัวอย่างการติดตามด้านบน โปรดทราบว่าความล้มเหลวเกิดขึ้นในนโยบาย ExtractVariables ที่ชื่อ EV-ExtractFormParams

  6. ไปที่โฟลว์ชื่อ Error หลังจากนโยบายที่เฉพาะเจาะจงซึ่งล้มเหลว

  7. โปรดจดค่าต่อไปนี้จากร่องรอย

    ข้อผิดพลาด: Bad Form Data

    state: PROXY_REQ_FLOW

    error.class: com.apigee.rest.framework.BadRequestException

    • ค่าของข้อผิดพลาด Bad Form Data แสดงว่าพารามิเตอร์ของแบบฟอร์ม มีอักขระบางตัวที่ไม่อนุญาตให้ใช้
    • ค่าของสถานะ PROXY_REQ_FLOW, บ่งชี้ว่า เกิดข้อผิดพลาดในโฟลว์คำขอของพร็อกซี API
  8. ไปที่เฟส AX (บันทึกข้อมูลวิเคราะห์) ในการติดตาม แล้วคลิก เฟส
  9. เลื่อนลงไปที่ส่วนรายละเอียดระยะ - ส่วนหัวของข้อผิดพลาด แล้ว กำหนดค่าของ X-Apigee-fault-code, X-Apigee-fault-source และ X-Apigee-fault-policy ดังที่แสดงด้านล่าง

  10. โปรดทราบว่าค่าของ 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
  11. ในตัวอย่างนี้ X-Apigee-fault-policy คือ extractvariables/EV- ExtractFormParams, ซึ่งหมายความว่านโยบาย ExtractVariables ที่ชื่อ EV-ExtractFormParams ล้มเหลวขณะอ่านหรือดึงพารามิเตอร์ของแบบฟอร์ม

NGINX

วิธีวินิจฉัยข้อผิดพลาดโดยใช้บันทึกการเข้าถึง NGINX

  1. หากเป็นผู้ใช้ Private Cloud คุณจะใช้บันทึกการเข้าถึง NGINX เพื่อ ระบุข้อมูลสำคัญเกี่ยวกับ HTTP 500 Internal Server Error ได้
  2. ตรวจสอบบันทึกการเข้าถึง NGINX

    /opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log

  3. ค้นหาเพื่อดูว่ามี500ข้อผิดพลาดที่มีรหัสข้อผิดพลาด protocol.http.BadFormDataในช่วงระยะเวลาหนึ่งๆ (หากปัญหา เกิดขึ้นในอดีต) หรือมีคำขอที่ยังคงล้มเหลวพร้อมกับ 500หรือไม่
  4. หากพบ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
  5. โปรดทราบว่าค่าของ X-Apigee-fault-code, X-Apigee-fault-source คือ protocol.http.BadFormData, policy ตามลำดับ และ X-Apigee-fault-policy ไม่ว่าง ซึ่งบ่งชี้ว่าเกิดข้อผิดพลาด ขณะที่นโยบายที่ระบุใน X-Apigee-fault-policy กำลังอ่านหรือแยกข้อมูลแบบฟอร์ม (พารามิเตอร์แบบฟอร์ม) ซึ่งมีอักขระที่ไม่อนุญาตให้ใช้
  6. ในตัวอย่างนี้ X-Apigee-fault-policy คือ extractvariables/EV- ExtractFormParams, ซึ่งหมายความว่านโยบาย ExtractVariables ที่ชื่อ EV-ExtractFormParams ล้มเหลวขณะอ่านพารามิเตอร์ ของแบบฟอร์ม

สาเหตุ: พารามิเตอร์แบบฟอร์มในคำขอมีอักขระที่ไม่อนุญาต

การวินิจฉัย

  1. กำหนดรหัสข้อผิดพลาด แหล่งที่มาของข้อผิดพลาด และนโยบายข้อผิดพลาดสำหรับ 500 Internal Server Error โดยใช้การตรวจสอบ API, เครื่องมือติดตาม หรือบันทึกการเข้าถึง NGINX ตามที่อธิบายไว้ ในขั้นตอนการวินิจฉัยทั่วไป
  2. หากรหัสข้อผิดพลาดเป็น protocol.http.BadFormData แหล่งที่มาของข้อผิดพลาดมีค่า proxy หรือ policy และนโยบายข้อผิดพลาดไม่ใช่ค่าว่าง แสดงว่านโยบายที่ระบุในนโยบายข้อผิดพลาดล้มเหลวขณะอ่านหรือแยกข้อมูลแบบฟอร์ม (พารามิเตอร์แบบฟอร์ม)
  3. อ่านนโยบายที่ระบุไว้ในนโยบายข้อบกพร่องและพิจารณาข้อมูลต่อไปนี้
    1. แหล่งที่มา: ระบุว่านโยบายกำลังอ่านหรือดึงข้อมูลจากคำขอหรือคำตอบ
    2. พารามิเตอร์ของแบบฟอร์ม: ระบุพารามิเตอร์ของแบบฟอร์มที่เฉพาะเจาะจงซึ่งอ่านได้ในนโยบาย

      ตัวอย่างที่ 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 มีอักขระที่ไม่อนุญาตให้ใช้

  4. ตรวจสอบว่ามีอักขระที่ไม่อนุญาตให้ใช้ในพารามิเตอร์ของแบบฟอร์มที่ระบุในขั้นตอนที่ 3 หรือไม่ โดยใช้วิธีใดวิธีหนึ่งต่อไปนี้

    เครื่องมือติดตาม

    วิธีตรวจสอบความถูกต้องโดยใช้เครื่องมือติดตาม

    1. หากคุณบันทึกการติดตามสำหรับคำขอที่ไม่สำเร็จตามที่อธิบายไว้ใน ขั้นตอนการวินิจฉัยทั่วไป ให้เลือกคำขอที่ไม่สำเร็จรายการใดรายการหนึ่ง
    2. หากคุณพิจารณาแล้วว่าพารามิเตอร์ของแบบฟอร์มที่มีอักขระใดๆ ที่ไม่อนุญาตให้ใช้เป็นส่วนหนึ่งของคำขอ HTTP ในขั้นตอนที่ 3 ด้านบน ให้ทำดังนี้
      1. ไปที่ระยะได้รับคำขอจากลูกค้า
      2. เลื่อนลงไปที่ส่วนรายละเอียดระยะ แล้วตรวจสอบ ขอเนื้อหา

        ( ดูรูปภาพขนาดใหญ่ขึ้น)

      3. ในตัวอย่างข้างต้น โปรดทราบว่าพารามิเตอร์แบบฟอร์ม password มีเครื่องหมายเปอร์เซ็นต์ (%)
      4. เนื่องจากเครื่องหมายเปอร์เซ็นต์ (%) ยังใช้สำหรับ การเข้ารหัสเปอร์เซ็นต์ของอักขระพิเศษ จึงไม่สามารถใช้ใน ข้อมูลแบบฟอร์มได้
      5. ดังนั้น Apigee Edge จึงตอบกลับด้วย 500 Internal Server Error พร้อมรหัสข้อผิดพลาด protocol.http.BadFormData

    คำขอจริง

    วิธีตรวจสอบโดยใช้คำขอจริง

    1. หากคุณไม่มีสิทธิ์เข้าถึงคำขอจริงที่ส่งไปยังเซิร์ฟเวอร์เป้าหมาย ให้ไปที่การแก้ปัญหา
    2. หากคุณมีสิทธิ์เข้าถึงคำขอจริงที่ส่งไปยัง Apigee Edge ให้ทำตาม ขั้นตอนต่อไปนี้
      1. ตรวจสอบเนื้อหาข้อมูลแบบฟอร์มและดูว่ามีอักขระที่ไม่อนุญาตให้ใช้หรือไม่ เช่น เครื่องหมายเปอร์เซ็นต์ (%) หรือเครื่องหมายเปอร์เซ็นต์ (%) ตามด้วยอักขระเลขฐานสิบหกที่ไม่ถูกต้อง

        ตัวอย่างที่ 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 มีเครื่องหมายเปอร์เซ็นต์ (%) ตามด้วย อักขระฐาน 16 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 มีเครื่องหมายเปอร์เซ็นต์ (%) ซึ่งไม่ควร ส่งเป็นข้อมูลแบบฟอร์มตามที่เป็น

    3. ในตัวอย่าง 2 รายการข้างต้น ข้อมูลแบบฟอร์มที่ส่งเป็นส่วนหนึ่งของคำขอ HTTP ไปยัง Apigee Edge มีอักขระที่ไม่อนุญาตให้ใช้
    4. ดังนั้น Apigee Edge จึงตอบกลับด้วย 500 Internal Server Error พร้อมรหัสข้อผิดพลาด protocol.http.BadFormData

ความละเอียด

  1. ตรวจสอบว่าอักขระพิเศษในทั้งคีย์และค่าของข้อมูลหรือพารามิเตอร์ของแบบฟอร์ม ที่ส่งเป็นส่วนหนึ่งของคำขอ HTTP โดยไคลเอ็นต์ได้รับการเข้ารหัสเสมอตามที่อธิบายไว้ใน ข้อมูลแบบฟอร์ม - application/x-www-form-urlencoded
  2. สำหรับตัวอย่างที่กล่าวถึงข้างต้น คุณสามารถแก้ไขปัญหาได้ดังนี้

    ตัวอย่างที่ 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

ข้อมูลอ้างอิง