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

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

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

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

ส่วนหัว 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 ส่วน 6.5.5: 405 เมธอดไม่ได้รับอนุญาต หรือใช้การจัดการความผิดพลาดเพื่อตอบกลับด้วยรหัสสถานะ HTTP 405 Method Not Allowed รวมถึงส่วนหัว Allow ตามที่อธิบายไว้ใน Playbook เกี่ยวกับการแก้ปัญหา 502 เกตเวย์ที่ไม่ถูกต้อง - ต้องมีการตอบกลับ4

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

ในกรณีดังกล่าว คุณจะตั้งค่าส่วนหัวอนุญาตการละเว้นสำหรับพร็อพเพอร์ตี้ 405 HTTP.ignore.allow_header.for.405 ที่ระดับผู้ประมวลผลข้อความชั่วคราวได้ การตั้งค่าพร็อพเพอร์ตี้นี้เป็น 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 เป็น "จริง" ในตัวประมวลผลข้อความ

ใน 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 ในตัวประมวลผลข้อความ

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

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

    /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. รีสตาร์ทโปรแกรมประมวลผลข้อความดังที่แสดงด้านล่าง
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
    
  6. หากมีเครื่องมือประมวลผลข้อความมากกว่า 1 เครื่อง ให้ทำตามขั้นตอนข้างต้นซ้ำในตัวประมวลผลข้อความทั้งหมด

การยืนยันส่วนหัวการอนุญาตแบบละเว้นสำหรับคุณสมบัติ 405 ได้รับการตั้งค่าเป็น "จริง" ในตัวประมวลผลข้อความ

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

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

  1. ในเครื่องเครื่องมือประมวลผลข้อความ ให้ค้นหาพร็อพเพอร์ตี้ 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. หากอัปเดตคุณสมบัติในตัวประมวลผลข้อความสำเร็จ คำสั่งด้านบนควรแสดงค่าของพร็อพเพอร์ตี้ 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 ให้เป็น true ในตัวประมวลผลข้อความอย่างถูกต้อง หากคุณพลาดขั้นตอนใด ให้ทำซ้ำขั้นตอนทั้งหมดอย่างถูกต้องอีกครั้ง
  4. หากยังแก้ไขพร็อพเพอร์ตี้ HTTP.ignore.allow_header.for.405 ไม่ได้ โปรดติดต่อทีมสนับสนุนของ Apigee Edge

การกำหนดค่าส่วนหัวอนุญาตการละเว้นสำหรับคุณสมบัติ 405 เป็น "เท็จ" ในตัวประมวลผลข้อความ

ส่วนนี้จะอธิบายวิธีกำหนดค่าพร็อพเพอร์ตี้ HTTP.ignore.allow_header.for.405 เป็นค่าเริ่มต้น false ในตัวประมวลผลข้อความโดยใช้โทเค็นตามไวยากรณ์ที่อธิบายไว้ในวิธีกำหนดค่า 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 ในตัวประมวลผลข้อความ คำสั่งด้านบนควรแสดงค่าของพร็อพเพอร์ตี้ 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. ในเครื่องเครื่องมือประมวลผลข้อความ ให้เปิดไฟล์ต่อไปนี้ในตัวแก้ไข

    /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. รีสตาร์ทโปรแกรมประมวลผลข้อความดังที่แสดงด้านล่าง
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
    
  10. หากมีเครื่องมือประมวลผลข้อความมากกว่า 1 เครื่อง ให้ทำตามขั้นตอนข้างต้นซ้ำในตัวประมวลผลข้อความทั้งหมด

การยืนยันส่วนหัวการอนุญาตการละเว้นสำหรับคุณสมบัติ 405 มีการตั้งค่าเป็น "เท็จ" ในตัวประมวลผลข้อความ

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

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

  1. ค้นหาพร็อพเพอร์ตี้ 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. หากอัปเดตคุณสมบัติในตัวประมวลผลข้อความสำเร็จ คำสั่งด้านบนควรแสดงค่าของพร็อพเพอร์ตี้ 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 ให้เป็นเท็จในระบบประมวลผลข้อความอย่างถูกต้อง หากคุณพลาดขั้นตอนใด ให้ทำซ้ำขั้นตอนทั้งหมดอย่างถูกต้อง
  4. หากยังแก้ไขพร็อพเพอร์ตี้ HTTP.ignore.allow_header.for.405 ไม่ได้ โปรดติดต่อทีมสนับสนุนของ Apigee Edge