Định cấu hình tiêu đề cho phép bỏ qua cho thuộc tính 405 trong Bộ xử lý thông báo

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, POSTHEAD, 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:

Đị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.

  1. 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
    
  2. 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
    
  3. Lưu các thay đổi.
  4. Đả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
    
  5. 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
    
  6. 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.

  1. 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ành true hay chưa, như minh hoạ dưới đây:
    grep -ri "HTTP.ignore.allow_header.for.405" /opt/apigee/edge-message-processor/conf
    
  2. 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ạng true trong tệp http.properties như minh họa dưới đây:
    /opt/apigee/edge-message-processor/conf/http.properties:HTTP.ignore.allow_header.for.405=true
    
  3. 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ạng false, 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.
  4. 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.

  1. Xác minh xem thuộc tính HTTP.ignore.allow_header.for.405 có được sửa đổi thành true 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
    
  2. 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ính HTTP.ignore.allow_header.for.405 dưới dạng true trong tệp http.properties như sau:
    /opt/apigee/edge-message-processor/conf/http.properties:HTTP.ignore.allow_header.for.405=true
    
  3. Nếu lệnh trên cho thấy thuộc tính HTTP.ignore.allow_header.for.405 được đặt thành false (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.
  4. Nếu bạn đặt thuộc tính HTTP.ignore.allow_header.for.405 thành true, thì hãy thực hiện các bước sau để chuyển về giá trị mặc định false của thuộc tính đó.
  5. 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
    
  6. Xoá dòng sau khỏi tệp thuộc tính:
    conf_http_HTTP.ignore.allow_header.for.405=true
    
  7. Lưu các thay đổi.
  8. Đả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
    
  9. 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
    
  10. 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.

  1. 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ành false hay chưa, như minh hoạ bên dưới:
    grep -ri "HTTP.ignore.allow_header.for.405" /opt/apigee/edge-message-processor/conf
    
  2. 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ạng false trong tệp http.properties như minh họa dưới đây:
    /opt/apigee/edge-message-processor/conf/http.properties:HTTP.ignore.allow_header.for.405=false
    
  3. Nếu bạn vẫn thấy giá trị của thuộc tính HTTP.ignore.allow_header.for.405true, 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.
  4. 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.