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