Đị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.
Truy cập vào tài liệu Apigee X.
thông tin

Trong quá trình giao tiếp giữa máy khách và máy chủ, máy chủ sẽ phản hồi bằng mã trạng thái HTTP 405 Method Not Allowed nếu máy chủ biết phương thức yêu cầu HTTP mà máy khách đưa ra nhưng không được tài nguyên đích hỗ trợ. Tương tự trong 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 yêu cầu máy chủ phụ trợ gửi các phản hồi 405 Method Not Allowed kèm theo danh sách các phương thức được phép trong tiêu đề Allow, theo quy cách RFC 7231, phần 6.5.5: 405 Method Not Allowed (Phương thức không được phép).

Bạn phải gửi tiêu đề Allow 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 kèm theo mã trạng thái HTTP 405 Method Not Allowed,, thì Apigee sẽ trả về mã trạng thái HTTP 502 Bad Gateway kèm theo mã lỗi protocol.http.Response405WithoutAllowHeader cho ứng dụng khách. Giải pháp được đề xuất để giải quyết lỗi này là sửa máy chủ phụ trợ để tuân thủ quy cách RFC 7231, phần 6.5.5: 405 Phương thức không được phép hoặc sử dụng tính năng xử lý lỗi để phản hồ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 sổ tay khắc phục sự cố 502 Lỗi cổng xấu – Phản hồi 405 không có tiêu đề Cho phép.

Tuy nhiên, trong một số trường hợp đặc biệt, bạn có thể không khắc phục được phần phụ trợ hoặc sửa đổi API Proxy ngay lập tức để giải quyết vấn đề này.

Trong những trường hợp như vậy, bạn có thể tạm thời đặt tiêu đề bỏ qua cho phép cho 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 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 có thể sửa máy chủ phụ trợ để gửi mã trạng thái HTTP 405 Method Not Allowed bằng tiêu đề Allow, bạn có thể hoàn nguyê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õ các chủ đề sau:

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

Theo mặc định, trong Apigee Edge, thuộc tính HTTP.ignore.allow_header.for.405 được đặt thành false. Điều này cho phép Apigee Edge trả về 502 Bad Gateway với 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 mà 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 Bộ xử lý thông báo.

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 Message Processors (Bộ xử lý thông báo), bằng cách 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ý tin nhắn, hãy mở tệp sau trong một trình chỉnh sửa. Nếu chưa có, hãy tạo một tệp.

    /opt/apigee/customer/application/message-processor.properties

    Ví dụ: để mở tệp bằng vi, hãy nhập nội dung 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 thay đổi.
  4. Đảm bảo tệp thuộc tính thuộc quyền sở hữu của người dùng apigee như minh hoạ dưới đây:
    chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
    
  5. Khởi động lại Trình 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ý tin nhắn, hãy lặp lại các bước trên cho tất cả Trình xử lý tin nhắn.

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ô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 thành true trên Trình xử lý thông báo.

Mặc dù bạn 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 Trình xử lý thông báo, nhưng bạ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 Message Processor, hãy tìm thuộc tính HTTP.ignore.allow_header.for.405 trong thư mục /opt/apigee/edge-message-processor/conf và kiểm tra xem thuộc tính này đã được đặt thành true 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 Message Processor, thì lệnh trên sẽ cho thấy giá trị của thuộc tính HTTP.ignore.allow_header.for.405true trong tệp http.properties như 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ị cho thuộc tính HTTP.ignore.allow_header.for.405false, hãy xác minh rằng bạn đã làm theo tất cả các bước được nêu trong phần Định cấu hình tiêu đề bỏ qua cho thuộc tính 405 thành true trong Trình xử lý thông báo một cách chính xác. Nếu bạn bỏ lỡ bước nào, hãy lặp lại tất cả các bước một cách chính xác.
  4. Nếu bạn vẫn không thể sửa đổi tài sản HTTP.ignore.allow_header.for.405, hãy liên hệ với Nhóm hỗ trợ Apigee Edge.

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

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 Trình xử lý thông báo, bằng cách 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. 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 thuộc tính được đặt thành true trên Trình xử lý thông báo, thì lệnh trên sẽ cho thấy giá trị của thuộc tính HTTP.ignore.allow_header.for.405true trong tệp http.properties như minh hoạ dưới đây:
    /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 cần làm gì khác. Tức là bỏ qua các bước sau.
  4. Nếu thuộc tính HTTP.ignore.allow_header.for.405 được đặt thành true, hãy thực hiện các bước sau để quay lại giá trị mặc định false.
  5. Trên máy Xử lý thông báo, hãy mở tệp sau trong một 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 nội dung 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 thay đổi.
  8. Đảm bảo tệp thuộc tính thuộc quyền sở hữu của người dùng apigee như minh hoạ dưới đây:
    chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
    
  9. Khởi động lại Trình 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ý tin nhắn, hãy lặp lại các bước trên cho tất cả Trình xử lý tin nhắn.

Xác minh tiêu đề cho phép bỏ qua đối với 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 thành false trên Trình xử lý thông báo.

Mặc dù bạn dùng mã thông báo conf_http_HTTP.ignore.allow_header.for.405 để cập nhật giá trị trên Trình xử lý thông báo, nhưng bạ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 Message Processor, hãy tìm thuộc tính HTTP.ignore.allow_header.for.405 trong thư mục /opt/apigee/edge-message- processor/conf và kiểm tra xem thuộc tính này đã được đặt 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 Message Processor, thì lệnh trên sẽ cho thấy giá trị của thuộc tính HTTP.ignore.allow_header.for.405false trong tệp http.properties như 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ị cho thuộc tính HTTP.ignore.allow_header.for.405true, thì hãy xác minh rằng bạn đã làm theo tất cả các bước được nêu trong phần Định cấu hình tiêu đề cho phép bỏ qua cho 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ước nào, hãy lặp lại tất cả các bước một cách chính xác.
  4. Nếu bạn vẫn không thể sửa đổi tài sản HTTP.ignore.allow_header.for.405, hãy liên hệ với Nhóm hỗ trợ Apigee Edge.