คุณกำลังดูเอกสารประกอบของ 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
ได้
ก่อนเริ่มต้น
ก่อนทําตามขั้นตอนในเอกสารฉบับนี้ โปรดทําความเข้าใจหัวข้อต่อไปนี้
- อ่านเพลย์บุ๊ก - 502 Bad Gateway - โปรดตอบกลับ 405 without Allowheading
- หากไม่คุ้นเคยกับการกำหนดค่าพร็อพเพอร์ตี้สำหรับ 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 ให้เป็น true ในตัวประมวลผลข้อความอย่างถูกต้อง หากคุณพลาดขั้นตอนใด ให้ทำซ้ำขั้นตอนทั้งหมดอย่างถูกต้องอีกครั้ง - หากยังแก้ไขพร็อพเพอร์ตี้
HTTP.ignore.allow_header.for.405
ไม่ได้ โปรดติดต่อทีมสนับสนุนของ Apigee Edge
การกำหนดค่าส่วนหัวอนุญาตการละเว้นสำหรับคุณสมบัติ 405 เป็น "เท็จ" ในตัวประมวลผลข้อความ
ส่วนนี้จะอธิบายวิธีกำหนดค่าพร็อพเพอร์ตี้ HTTP.ignore.allow_header.for.405
เป็นค่าเริ่มต้น false
ในตัวประมวลผลข้อความโดยใช้โทเค็นตามไวยากรณ์ที่อธิบายไว้ในวิธีกำหนดค่า 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
ในตัวประมวลผลข้อความ คำสั่งด้านบนควรแสดงค่าของพร็อพเพอร์ตี้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 ให้เป็นเท็จในระบบประมวลผลข้อความอย่างถูกต้อง หากคุณพลาดขั้นตอนใด ให้ทำซ้ำขั้นตอนทั้งหมดอย่างถูกต้อง - หากยังแก้ไขพร็อพเพอร์ตี้
HTTP.ignore.allow_header.for.405
ไม่ได้ โปรดติดต่อทีมสนับสนุนของ Apigee Edge