คุณกำลังดูเอกสารประกอบของ 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 ได้
ก่อนเริ่มต้น
โปรดอ่านและทำความเข้าใจหัวข้อต่อไปนี้ก่อนใช้ขั้นตอนในเอกสารนี้
- อ่าน Playbook - 502 Bad Gateway - response 405 without Allow header.
- หากคุณไม่คุ้นเคยกับการกำหนดค่าพร็อพเพอร์ตี้สำหรับ Edge บน Private Cloud โปรดอ่าน วิธีกำหนดค่า Edge
การกำหนดค่าส่วนหัว "ไม่สนใจ" สำหรับพร็อพเพอร์ตี้ 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
-
เปิดไฟล์ต่อไปนี้ในเครื่อง Message Processor ในเครื่องมือแก้ไข หากยังไม่มี ให้สร้างไฟล์
/opt/apigee/customer/application/message-processor.properties
ตัวอย่างเช่น หากต้องการเปิดไฟล์โดยใช้ vi ให้ป้อนคำสั่งต่อไปนี้
vi /opt/apigee/customer/application/message-processor.properties
- เพิ่มบรรทัดในรูปแบบต่อไปนี้ลงในไฟล์พร็อพเพอร์ตี้
conf_http_HTTP.ignore.allow_header.for.405=true
- บันทึกการเปลี่ยนแปลง
- ตรวจสอบว่าไฟล์พร็อพเพอร์ตี้เป็นของผู้ใช้
apigeeดังที่แสดงด้านล่างchown apigee:apigee /opt/apigee/customer/application/message-processor.properties
- รีสตาร์ท Message Processor ดังที่แสดงด้านล่าง
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
- หากมี 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 หรือไม่
- ในเครื่อง 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
- หากอัปเดตพร็อพเพอร์ตี้ใน 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
- หากยังเห็นค่าของพร็อพเพอร์ตี้
HTTP.ignore.allow_header.for.405เป็นfalseให้ตรวจสอบว่าคุณได้ทำตามขั้นตอนทั้งหมดที่ระบุไว้ใน การกำหนดค่าส่วนหัว "ไม่สนใจ" สำหรับพร็อพเพอร์ตี้ 405 เป็น "จริง" ใน Message Processor อย่างถูกต้อง หากข้ามขั้นตอนใดไป ให้ทำซ้ำขั้นตอนทั้งหมดอีกครั้งอย่างถูกต้อง - หากยังแก้ไขพร็อพเพอร์ตี้
HTTP.ignore.allow_header.for.405ไม่ได้ โปรดติดต่อทีมสนับสนุนของ Apigee Edge
การกำหนดค่าส่วนหัว "ไม่สนใจ" สำหรับพร็อพเพอร์ตี้ 405 เป็น "เท็จ" ใน Message Processor
ส่วนนี้จะอธิบายวิธีกำหนดค่าพร็อพเพอร์ตี้
HTTP.ignore.allow_header.for.405 เป็นค่าเริ่มต้น false
ใน Message Processor โดยใช้โทเค็นตามไวยากรณ์ที่อธิบายไว้ใน
หัวข้อวิธีกำหนดค่า Edge
- ตรวจสอบว่าพร็อพเพอร์ตี้
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
- หากตั้งค่าพร็อพเพอร์ตี้เป็น
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
- หากคำสั่งด้านบนแสดงว่าพร็อพเพอร์ตี้
HTTP.ignore.allow_header.for.405ตั้งค่าเป็นfalse(ค่าเริ่มต้น) คุณก็ไม่ต้องดำเนินการใดๆ เพิ่มเติม นั่นคือ ข้ามขั้นตอนต่อไปนี้ - หากตั้งค่าพร็อพเพอร์ตี้
HTTP.ignore.allow_header.for.405เป็นtrueให้ทำตามขั้นตอนต่อไปนี้เพื่อเปลี่ยนกลับเป็นค่าเริ่มต้นfalse เปิดไฟล์ต่อไปนี้ในเครื่อง Message Processor ในเครื่องมือแก้ไข
/opt/apigee/customer/application/message-processor.properties
ตัวอย่างเช่น หากต้องการเปิดไฟล์โดยใช้ vi ให้ป้อนคำสั่งต่อไปนี้
vi /opt/apigee/customer/application/message-processor.properties
- นำบรรทัดต่อไปนี้ออกจากไฟล์พร็อพเพอร์ตี้
conf_http_HTTP.ignore.allow_header.for.405=true
- บันทึกการเปลี่ยนแปลง
- ตรวจสอบว่าไฟล์พร็อพเพอร์ตี้เป็นของผู้ใช้
apigeeดังที่แสดงด้านล่างchown apigee:apigee /opt/apigee/customer/application/message-processor.properties
- รีสตาร์ท Message Processor ดังที่แสดงด้านล่าง
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
- หากมี 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 หรือไม่
- ในเครื่อง 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
- หากอัปเดตพร็อพเพอร์ตี้ใน 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
- หากยังเห็นค่าของพร็อพเพอร์ตี้
HTTP.ignore.allow_header.for.405เป็นtrueให้ตรวจสอบว่าคุณได้ทำตามขั้นตอนทั้งหมดที่ระบุไว้ใน การกำหนดค่าส่วนหัว "ไม่สนใจ" สำหรับพร็อพเพอร์ตี้ 405 เป็น "เท็จ" ใน Message Processor อย่างถูกต้อง หากข้ามขั้นตอนใดไป ให้ทำซ้ำขั้นตอนทั้งหมดอีกครั้งอย่างถูกต้อง - หากยังแก้ไขพร็อพเพอร์ตี้
HTTP.ignore.allow_header.for.405ไม่ได้ โปรดติดต่อทีมสนับสนุนของ Apigee Edge