การกําหนดค่าส่วนหัวอนุญาตการละเว้นสําหรับพร็อพเพอร์ตี้ 405 ในตัวประมวลผลข้อความ

คุณกำลังดูเอกสารประกอบของ Apigee Edge
ไปที่ เอกสารประกอบของ Apigee X
info

ในการสื่อสารระหว่างไคลเอ็นต์กับเซิร์ฟเวอร์ เซิร์ฟเวอร์จะตอบกลับด้วยรหัสสถานะ HTTP 405 Method Not Allowed หาก เมธอดคำขอ HTTP ที่ไคลเอ็นต์แสดงเป็นที่รู้จักของเซิร์ฟเวอร์ แต่ทรัพยากรเป้าหมายไม่รองรับ ในทำนองเดียวกัน ใน Apigee Edge เซิร์ฟเวอร์แบ็กเอนด์สามารถ ตอบกลับด้วยรหัสสถานะ HTTP 405 Method Not Allowed.

Apigee Edge คาดหวังให้เซิร์ฟเวอร์แบ็กเอนด์ส่งการตอบกลับ 405 Method Not Allowed พร้อมรายการเมธอดที่อนุญาตในส่วนหัว Allow ตามข้อกำหนด RFC 7231, section 6.5.5: 405 Method Not Allowed

ส่วนหัว Allow ต้องส่งในรูปแบบต่อไปนี้

Allow: HTTP_METHODS

ตัวอย่างเช่น หากเซิร์ฟเวอร์แบ็กเอนด์อนุญาตเมธอด GET, POST และ HEAD คุณต้องตรวจสอบว่าส่วนหัว Allow มีเมธอดเหล่านั้น ดังนี้

Allow: GET, POST, HEAD

หากเซิร์ฟเวอร์แบ็กเอนด์ไม่ส่งส่วนหัว Allow พร้อมรหัสสถานะ HTTP 405 Method Not Allowed, Apigee จะแสดงรหัสสถานะ HTTP 502 Bad Gateway พร้อมรหัสข้อผิดพลาด protocol.http.Response405WithoutAllowHeader ไปยัง แอปพลิเคชันไคลเอ็นต์ วิธีแก้ปัญหาที่แนะนำ สำหรับข้อผิดพลาดนี้คือ การแก้ไขเซิร์ฟเวอร์แบ็กเอนด์ให้เป็นไปตามข้อกำหนด RFC 7231, section 6.5.5: 405 Method Not Allowed หรือใช้การจัดการข้อผิดพลาดเพื่อ ตอบกลับด้วยรหัสสถานะ HTTP 405 Method Not Allowed รวมถึงส่วนหัว Allow ตามที่อธิบายไว้ใน Playbook การแก้ปัญหา 502 Bad Gateway - Response 405 without Allow header

อย่างไรก็ตาม ในบางกรณีพิเศษ คุณอาจไม่สามารถแก้ไขแบ็กเอนด์หรือแก้ไข พร็อกซี API เพื่อแก้ปัญหานี้ได้ทันที

ในกรณีดังกล่าว คุณสามารถตั้งค่าส่วนหัว "ไม่สนใจ" สำหรับพร็อพเพอร์ตี้ 405 HTTP.ignore.allow_header.for.405 ที่ระดับ Message Processor ชั่วคราว การตั้งค่าพร็อพเพอร์ตี้นี้เป็น true จะป้องกันไม่ให้ Apigee แสดงการตอบกลับ 502 Bad Gateway ไปยังแอปพลิเคชันไคลเอ็นต์ แม้ว่า เซิร์ฟเวอร์แบ็กเอนด์จะส่งรหัสสถานะ HTTP 405 Method Not Allowed โดยไม่มี ส่วนหัว Allow ก็ตาม

เมื่อคุณพร้อมที่จะแก้ไขเซิร์ฟเวอร์แบ็กเอนด์ให้ส่งรหัสสถานะ HTTP 405 Method Not Allowed พร้อมส่วนหัว Allow แล้ว คุณสามารถเปลี่ยนพร็อพเพอร์ตี้ HTTP.ignore.allow_header.for.405 กลับเป็นค่าเริ่มต้น false ได้

ก่อนเริ่มต้น

โปรดอ่านและทำความเข้าใจหัวข้อต่อไปนี้ก่อนใช้ขั้นตอนในเอกสารนี้

การกำหนดค่าส่วนหัว "ไม่สนใจ" สำหรับพร็อพเพอร์ตี้ 405 เป็น "จริง" ใน Message Processor

ใน Apigee Edge พร็อพเพอร์ตี้ HTTP.ignore.allow_header.for.405 จะตั้งค่าเป็น false โดยค่าเริ่มต้น ซึ่งจะช่วยให้ Apigee Edge แสดง 502 Bad Gateway พร้อมรหัสข้อผิดพลาด protocol.http.Response405WithoutAllowHeader ไปยัง แอปพลิเคชันไคลเอ็นต์ได้ หากเซิร์ฟเวอร์แบ็กเอนด์ส่งรหัสสถานะ HTTP 405 Method Not Allowed โดยไม่มีส่วนหัว Allow หากต้องการป้องกันไม่ให้ Apigee Edge ส่ง 502 Bad Gateway ไปยังแอปพลิเคชันไคลเอ็นต์ คุณต้องตั้งค่า พร็อพเพอร์ตี้ HTTP.ignore.allow_header.for.405 เป็น true ใน Message Processor

ส่วนนี้จะอธิบายวิธีกำหนดค่าพร็อพเพอร์ตี้ HTTP.ignore.allow_header.for.405 เป็น true ใน Message Processor โดยใช้โทเค็นตามไวยากรณ์ที่อธิบายไว้ใน วิธีกำหนดค่า Edge

  1. เปิดไฟล์ต่อไปนี้ในเครื่อง Message Processor ในเครื่องมือแก้ไข หากยังไม่มี ให้สร้างไฟล์

    /opt/apigee/customer/application/message-processor.properties

    ตัวอย่างเช่น หากต้องการเปิดไฟล์โดยใช้ vi ให้ป้อนคำสั่งต่อไปนี้

    vi /opt/apigee/customer/application/message-processor.properties
  2. เพิ่มบรรทัดในรูปแบบต่อไปนี้ลงในไฟล์พร็อพเพอร์ตี้
    conf_http_HTTP.ignore.allow_header.for.405=true
  3. บันทึกการเปลี่ยนแปลง
  4. ตรวจสอบว่าไฟล์พร็อพเพอร์ตี้เป็นของผู้ใช้ apigee ดังที่แสดงด้านล่าง
    chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
    
  5. รีสตาร์ท Message Processor ดังที่แสดงด้านล่าง
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
    
  6. หากมี Message Processor มากกว่า 1 รายการ ให้ทำซ้ำขั้นตอนข้างต้นใน Message Processor ทั้งหมด

การยืนยันว่าส่วนหัว "ไม่สนใจ" สำหรับพร็อพเพอร์ตี้ 405 ตั้งค่าเป็น "จริง" ใน Message Processor

ส่วนนี้จะอธิบายวิธีตรวจสอบว่าพร็อพเพอร์ตี้ HTTP.ignore.allow_header.for.405 ได้รับการอัปเดตเป็น true ใน Message Processor เรียบร้อยแล้ว

แม้ว่าคุณจะใช้โทเค็น conf_http_HTTP.ignore.allow_header.for.405 เพื่ออัปเดต ค่าของพร็อพเพอร์ตี้ใน Message Processor แต่คุณต้องตรวจสอบว่าพร็อพเพอร์ตี้จริง HTTP.ignore.allow_header.for.405 ได้รับการตั้งค่าเป็น true หรือไม่

  1. ในเครื่อง Message Processor ให้ค้นหาพร็อพเพอร์ตี้ HTTP.ignore.allow_header.for.405 ในไดเรกทอรี /opt/apigee/edge-message-processor/conf และตรวจสอบว่าตั้งค่าเป็น true แล้วหรือไม่ ดังที่แสดงด้านล่าง
    grep -ri "HTTP.ignore.allow_header.for.405" /opt/apigee/edge-message-processor/conf
    
  2. หากอัปเดตพร็อพเพอร์ตี้ใน Message Processor สำเร็จ คำสั่งด้านบน ควรแสดงค่าของพร็อพเพอร์ตี้ HTTP.ignore.allow_header.for.405 เป็น true ในไฟล์ http.properties ดังที่แสดงด้านล่าง
    /opt/apigee/edge-message-processor/conf/http.properties:HTTP.ignore.allow_header.for.405=true
  3. หากยังเห็นค่าของพร็อพเพอร์ตี้ HTTP.ignore.allow_header.for.405 เป็น false ให้ตรวจสอบว่าคุณได้ทำตามขั้นตอนทั้งหมดที่ระบุไว้ใน การกำหนดค่าส่วนหัว "ไม่สนใจ" สำหรับพร็อพเพอร์ตี้ 405 เป็น "จริง" ใน Message Processor อย่างถูกต้อง หากข้ามขั้นตอนใดไป ให้ทำซ้ำขั้นตอนทั้งหมดอีกครั้งอย่างถูกต้อง
  4. หากยังแก้ไขพร็อพเพอร์ตี้ HTTP.ignore.allow_header.for.405 ไม่ได้ โปรดติดต่อทีมสนับสนุนของ Apigee Edge

การกำหนดค่าส่วนหัว "ไม่สนใจ" สำหรับพร็อพเพอร์ตี้ 405 เป็น "เท็จ" ใน Message Processor

ส่วนนี้จะอธิบายวิธีกำหนดค่าพร็อพเพอร์ตี้ HTTP.ignore.allow_header.for.405 เป็นค่าเริ่มต้น false ใน Message Processor โดยใช้โทเค็นตามไวยากรณ์ที่อธิบายไว้ใน หัวข้อวิธีกำหนดค่า Edge

  1. ตรวจสอบว่าพร็อพเพอร์ตี้ HTTP.ignore.allow_header.for.405 ได้รับการแก้ไขเป็น true หรือไม่ คุณสามารถทำได้โดยค้นหาพร็อพเพอร์ตี้นี้ ในไดเรกทอรี /opt/apigee/edge-message-processor/conf และตรวจสอบค่า โดยใช้คำสั่งต่อไปนี้
    grep -ri "HTTP.ignore.allow_header.for.405" /opt/apigee/edge-message-processor/conf
    
  2. หากตั้งค่าพร็อพเพอร์ตี้เป็น true ใน Message Processor คำสั่งด้านบน ควรแสดงค่าของพร็อพเพอร์ตี้ HTTP.ignore.allow_header.for.405 เป็น true ในไฟล์ http.properties ดังที่แสดงด้านล่าง
    /opt/apigee/edge-message-processor/conf/http.properties:HTTP.ignore.allow_header.for.405=true
  3. หากคำสั่งด้านบนแสดงว่าพร็อพเพอร์ตี้ HTTP.ignore.allow_header.for.405 ตั้งค่าเป็น false (ค่าเริ่มต้น) คุณก็ไม่ต้องดำเนินการใดๆ เพิ่มเติม นั่นคือ ข้ามขั้นตอนต่อไปนี้
  4. หากตั้งค่าพร็อพเพอร์ตี้ HTTP.ignore.allow_header.for.405 เป็น true ให้ทำตามขั้นตอนต่อไปนี้เพื่อเปลี่ยนกลับเป็นค่าเริ่มต้น false
  5. เปิดไฟล์ต่อไปนี้ในเครื่อง Message Processor ในเครื่องมือแก้ไข

    /opt/apigee/customer/application/message-processor.properties

    ตัวอย่างเช่น หากต้องการเปิดไฟล์โดยใช้ vi ให้ป้อนคำสั่งต่อไปนี้

    vi /opt/apigee/customer/application/message-processor.properties
    
  6. นำบรรทัดต่อไปนี้ออกจากไฟล์พร็อพเพอร์ตี้
    conf_http_HTTP.ignore.allow_header.for.405=true
  7. บันทึกการเปลี่ยนแปลง
  8. ตรวจสอบว่าไฟล์พร็อพเพอร์ตี้เป็นของผู้ใช้ apigee ดังที่แสดงด้านล่าง
    chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
    
  9. รีสตาร์ท Message Processor ดังที่แสดงด้านล่าง
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
    
  10. หากมี Message Processor มากกว่า 1 รายการ ให้ทำซ้ำขั้นตอนข้างต้นใน Message Processor ทั้งหมด

การยืนยันว่าส่วนหัว "ไม่สนใจ" สำหรับพร็อพเพอร์ตี้ 405 ตั้งค่าเป็น "เท็จ" ใน Message Processor

ส่วนนี้จะอธิบายวิธีตรวจสอบว่าพร็อพเพอร์ตี้ HTTP.ignore.allow_header.for.405 ได้รับการอัปเดตเป็น false ใน Message Processor เรียบร้อยแล้ว

แม้ว่าคุณจะใช้โทเค็น conf_http_HTTP.ignore.allow_header.for.405 เพื่ออัปเดตค่าใน Message Processor แต่คุณต้องตรวจสอบว่าพร็อพเพอร์ตี้จริง HTTP.ignore.allow_header.for.405 ได้รับการตั้งค่าเป็น false หรือไม่

  1. ในเครื่อง Message Processor ให้ค้นหาพร็อพเพอร์ตี้ HTTP.ignore.allow_header.for.405 ในไดเรกทอรี /opt/apigee/edge-message- processor/conf และตรวจสอบว่าตั้งค่าเป็น false แล้วหรือไม่ ดังที่แสดง ด้านล่าง:
    grep -ri "HTTP.ignore.allow_header.for.405" /opt/apigee/edge-message-processor/conf
    
  2. หากอัปเดตพร็อพเพอร์ตี้ใน Message Processor สำเร็จ คำสั่งด้านบน ควรแสดงค่าของพร็อพเพอร์ตี้ HTTP.ignore.allow_header.for.405 เป็น false ในไฟล์ http.properties ดังที่แสดงด้านล่าง
    /opt/apigee/edge-message-processor/conf/http.properties:HTTP.ignore.allow_header.for.405=false
  3. หากยังเห็นค่าของพร็อพเพอร์ตี้ HTTP.ignore.allow_header.for.405 เป็น true ให้ตรวจสอบว่าคุณได้ทำตามขั้นตอนทั้งหมดที่ระบุไว้ใน การกำหนดค่าส่วนหัว "ไม่สนใจ" สำหรับพร็อพเพอร์ตี้ 405 เป็น "เท็จ" ใน Message Processor อย่างถูกต้อง หากข้ามขั้นตอนใดไป ให้ทำซ้ำขั้นตอนทั้งหมดอีกครั้งอย่างถูกต้อง
  4. หากยังแก้ไขพร็อพเพอร์ตี้ HTTP.ignore.allow_header.for.405 ไม่ได้ โปรดติดต่อทีมสนับสนุนของ Apigee Edge