Bạn đang xem tài liệu về Apigee Edge.
Chuyển đến tài liệu về
Apigee X. thông tin
Trong giao tiếp giữa ứng dụng và máy chủ, máy chủ phản hồi bằng mã trạng thái HTTP 405
Method Not Allowed
nếu
phương thức yêu cầu HTTP do ứng dụng hiển thị được máy chủ biết nhưng không được tài nguyên mục tiêu hỗ trợ. Tương tự như Apigee Edge, máy chủ phụ trợ có thể phản hồi lại bằng mã trạng thái HTTP 405 Method Not Allowed.
Apigee Edge dự kiến máy chủ phụ trợ sẽ gửi phản hồi 405 Method Not Allowed
kèm theo danh sách các phương thức được cho phép trong tiêu đề Allow
, theo thông số kỹ thuật
RFC 7231, mục 6.5.5: 405 Phương thức không được phép.
Tiêu đề Allow
phải được gửi theo định dạng sau:
Allow: HTTP_METHODS
Ví dụ: nếu máy chủ phụ trợ của bạn cho phép các phương thức GET
, POST
và HEAD
, bạn cần đảm bảo rằng tiêu đề Allow
chứa các phương thức đó như sau:
Allow: GET, POST, HEAD
Nếu máy chủ phụ trợ không gửi tiêu đề Allow
có mã trạng thái HTTP 405 Method Not Allowed,
, thì Apigee sẽ trả về mã trạng thái HTTP 502 Bad
Gateway
có mã lỗi protocol.http.Response405WithoutAllowHeader
cho ứng dụng. Giải pháp đề xuất để giải quyết lỗi này là sửa máy chủ phụ trợ để tuân thủ thông số kỹ thuật
RFC 7231, mục 6.5.5: 405 Phương pháp không được phép hoặc dùng cách xử lý lỗi để phản hồi lại bằng mã trạng thái HTTP 405 Method Not Allowed
, bao gồm cả tiêu đề Allow
như đã giải thích trong cẩm nang khắc phục sự cố
502 Bad Gateway – Response 405 mà không cho phép tiêu đề Cho phép
Tuy nhiên, trong một số trường hợp ngoại lệ, bạn có thể không khắc phục được phần phụ trợ hoặc sửa đổi Proxy API để giải quyết ngay vấn đề này.
Trong những trường hợp như vậy, bạn có thể tạm thời thiết lập tiêu đề bỏ qua cho phép đối với thuộc tính 405
HTTP.ignore.allow_header.for.405
ở cấp Trình xử lý thông báo. Việc đặt thuộc tính này thành true
sẽ ngăn quá trình Apigee trả về phản hồi 502 Bad Gateway
cho các ứng dụng khách ngay cả khi máy chủ phụ trợ gửi mã trạng thái HTTP 405 Method Not Allowed
mà không có tiêu đề Allow
.
Sau khi khắc phục xong máy chủ phụ trợ của mình để gửi mã trạng thái HTTP 405 Method
Not Allowed
có tiêu đề Allow
, bạn có thể chuyển thuộc tính HTTP.ignore.allow_header.for.405
về giá trị mặc định false
.
Trước khi bắt đầu
Trước khi sử dụng các bước trong tài liệu này, hãy đảm bảo bạn hiểu rõ những chủ đề sau:
- Hãy đọc Cẩm nang – 502 Cổng không hợp lệ – phản hồi 405 không có tiêu đề Cho phép.
- Nếu bạn chưa hiểu rõ về cách định cấu hình các thuộc tính cho Edge trên Đám mây riêng tư, hãy đọc bài viết Cách định cấu hình Edge.
Định cấu hình tiêu đề bỏ qua cho phép của thuộc tính 405 thành true trên Bộ xử lý thư
Trong Apigee Edge, thuộc tính HTTP.ignore.allow_header.for.405
được đặt thành false
theo mặc định. Việc này cho phép Apigee Edge trả về 502 Bad
Gateway
có mã lỗi protocol.http.Response405WithoutAllowHeader
cho các ứng dụng khách nếu máy chủ phụ trợ gửi mã trạng thái HTTP 405 Method Not
Allowed
không có tiêu đề Allow
. Nếu muốn ngăn Apigee Edge gửi 502 Bad Gateway
đến các ứng dụng khách, bạn cần đặt giá trị của thuộc tính HTTP.ignore.allow_header.for.405
thành true
trên Trình xử lý tin nhắn.
Phần này giải thích cách định cấu hình thuộc tính HTTP.ignore.allow_header.for.405
thành true
trên Bộ xử lý thông báo, sử dụng mã thông báo theo cú pháp được mô tả trong
Cách định cấu hình Edge.
-
Trên máy Xử lý thư, mở tệp sau trong một trình chỉnh sửa. Hãy tạo tài khoản nếu bạn chưa có.
/opt/apigee/customer/application/message-processor.properties
Ví dụ: để mở tệp bằng vi, hãy nhập như sau:
vi /opt/apigee/customer/application/message-processor.properties
- Thêm một dòng theo định dạng sau vào tệp thuộc tính:
conf_http_HTTP.ignore.allow_header.for.405=true
- Lưu các thay đổi.
- Đảm bảo tệp thuộc tính do người dùng
apigee
sở hữu như minh hoạ bên dưới:chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
- Khởi động lại Bộ xử lý tin nhắn như minh hoạ dưới đây:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
- Nếu bạn có nhiều Trình xử lý thông báo, hãy lặp lại các bước trên cho tất cả các Trình xử lý thông báo.
Việc xác minh tiêu đề bỏ qua cho phép của thuộc tính 405 được đặt thành true trên Trình xử lý thư
Phần này giải thích cách xác minh rằng thuộc tính HTTP.ignore.allow_header.for.405
đã được cập nhật thành công lên true
trên Bộ xử lý thông báo.
Mặc dù sử dụng mã thông báo conf_http_HTTP.ignore.allow_header.for.405
để cập nhật giá trị của thuộc tính trên Bộ xử lý thông báo, bạn vẫn cần xác minh xem thuộc tính thực tế HTTP.ignore.allow_header.for.405
đã được đặt thành true
hay chưa.
- Trên máy xử lý thư, hãy tìm thuộc tính
HTTP.ignore.allow_header.for.405
trong thư mục/opt/apigee/edge-message-processor/conf
rồi kiểm tra xem thuộc tính này đã được thiết lập thànhtrue
hay chưa, như minh hoạ dưới đây:grep -ri "HTTP.ignore.allow_header.for.405" /opt/apigee/edge-message-processor/conf
- Nếu thuộc tính được cập nhật thành công trên Trình xử lý thông báo, thì lệnh ở trên sẽ hiển thị giá trị của thuộc tính
HTTP.ignore.allow_header.for.405
dưới dạngtrue
trong tệphttp.properties
như minh họa dưới đây:/opt/apigee/edge-message-processor/conf/http.properties:HTTP.ignore.allow_header.for.405=true
- Nếu bạn vẫn thấy giá trị của thuộc tính
HTTP.ignore.allow_header.for.405
dưới dạngfalse
, hãy kiểm tra để đảm bảo bạn đã làm đúng theo tất cả các bước trong bài viết Định cấu hình tiêu đề bỏ qua cho phép đối với thuộc tính 405 thành true trong Trình xử lý thông báo. Nếu bạn bỏ lỡ bất kỳ bước nào, hãy lặp lại tất cả các bước một lần nữa cho đúng. - Nếu bạn vẫn không sửa đổi được thuộc tính
HTTP.ignore.allow_header.for.405
, hãy liên hệ với Bộ phận hỗ trợ Apigee.
Định cấu hình tiêu đề cho phép bỏ qua của thuộc tính 405 thành false trên Bộ xử lý thư
Phần này giải thích cách định cấu hình thuộc tính HTTP.ignore.allow_header.for.405
thành giá trị mặc định false
trên Bộ xử lý thông báo, sử dụng mã thông báo theo cú pháp được mô tả trong phần Cách định cấu hình Edge.
- Xác minh xem thuộc tính
HTTP.ignore.allow_header.for.405
có được sửa đổi thànhtrue
hay không. Bạn có thể thực hiện việc này bằng cách tìm kiếm thuộc tính này trong thư mục/opt/apigee/edge-message-processor/conf
và kiểm tra giá trị của thuộc tính đó bằng lệnh sau:grep -ri "HTTP.ignore.allow_header.for.405" /opt/apigee/edge-message-processor/conf
- Nếu bạn thiết lập thuộc tính thành
true
trên Trình xử lý thông báo, thì lệnh ở trên sẽ hiển thị giá trị của thuộc tínhHTTP.ignore.allow_header.for.405
dưới dạngtrue
trong tệphttp.properties
như sau:/opt/apigee/edge-message-processor/conf/http.properties:HTTP.ignore.allow_header.for.405=true
- Nếu lệnh trên cho thấy thuộc tính
HTTP.ignore.allow_header.for.405
được đặt thànhfalse
(giá trị mặc định), thì bạn không phải làm gì thêm. Điều này có nghĩa là hãy bỏ qua các bước sau đây. - Nếu bạn đặt thuộc tính
HTTP.ignore.allow_header.for.405
thànhtrue
, thì hãy thực hiện các bước sau để chuyển về giá trị mặc địnhfalse
của thuộc tính đó. Trên máy Xử lý thư, mở tệp sau trong trình chỉnh sửa:
/opt/apigee/customer/application/message-processor.properties
Ví dụ: để mở tệp bằng vi, hãy nhập như sau:
vi /opt/apigee/customer/application/message-processor.properties
- Xoá dòng sau khỏi tệp thuộc tính:
conf_http_HTTP.ignore.allow_header.for.405=true
- Lưu các thay đổi.
- Đảm bảo tệp thuộc tính do người dùng
apigee
sở hữu như minh hoạ bên dưới:chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
- Khởi động lại Bộ xử lý tin nhắn như minh hoạ dưới đây:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
- Nếu bạn có nhiều Trình xử lý thông báo, hãy lặp lại các bước trên cho tất cả các Trình xử lý thông báo.
Việc xác minh tiêu đề bỏ qua cho phép của thuộc tính 405 được đặt thành false trên Trình xử lý thông báo
Phần này giải thích cách xác minh rằng thuộc tính HTTP.ignore.allow_header.for.405
đã được cập nhật thành công lên false
trên Bộ xử lý thông báo.
Mặc dù bạn sử dụng mã thông báo conf_http_HTTP.ignore.allow_header.for.405
để cập nhật giá trị trên Bộ xử lý thông báo, nhưng bạn vẫn cần xác minh xem thuộc tính thực tế HTTP.ignore.allow_header.for.405
đã được đặt thành false
hay chưa.
- Trên máy xử lý thư, hãy tìm thuộc tính
HTTP.ignore.allow_header.for.405
trong thư mục/opt/apigee/edge-message- processor/conf
rồi kiểm tra xem thuộc tính này đã được thiết lập thànhfalse
hay chưa, như minh hoạ bên dưới:grep -ri "HTTP.ignore.allow_header.for.405" /opt/apigee/edge-message-processor/conf
- Nếu thuộc tính được cập nhật thành công trên Trình xử lý thông báo, thì lệnh ở trên sẽ hiển thị giá trị của thuộc tính
HTTP.ignore.allow_header.for.405
dưới dạngfalse
trong tệphttp.properties
như minh họa dưới đây:/opt/apigee/edge-message-processor/conf/http.properties:HTTP.ignore.allow_header.for.405=false
- Nếu bạn vẫn thấy giá trị của thuộc tính
HTTP.ignore.allow_header.for.405
làtrue
, hãy kiểm tra để đảm bảo bạn đã làm theo tất cả các bước trong bài viết Định cấu hình tiêu đề bỏ qua cho phép của thuộc tính 405 thành false trên Trình xử lý thông báo một cách chính xác. Nếu bạn bỏ lỡ bất kỳ bước nào, hãy lặp lại tất cả các bước đúng cách một lần nữa. - Nếu bạn vẫn không sửa đổi được thuộc tính
HTTP.ignore.allow_header.for.405
, hãy liên hệ với Bộ phận hỗ trợ Apigee.