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