2014-10-27 14 views
7

Tôi đang thiết kế một API web REST, nhưng đã nhận thấy điều gì đó kỳ lạ gần đây.Cách xử lý các máy chủ proxy chặn các phương thức yêu cầu HTTP cụ thể?

Dường như một số máy chủ proxy đang chặn các phương thức yêu cầu HTTP cụ thể. Trong trường hợp của tôi, các phương pháp PUT và PATCH rất quan trọng để sửa đổi tài nguyên. Điều này phần nào phá vỡ chức năng của API tôi đang thiết kế ...

Có cách nào tốt để bỏ qua vấn đề này mà không vi phạm ràng buộc kiến ​​trúc RESTful không? Theo tôi không có, bởi vì sử dụng đầy đủ các động từ HTTP được ủng hộ khi thiết kế một API web REST qua HTTP ...

+0

Có proxy là ai? Ai sẽ sử dụng API của bạn? – CodeCaster

+0

Rõ ràng máy chủ proxy doanh nghiệp nội bộ của chúng tôi đang chặn các phương pháp PUT và PATCH ... không có ý nghĩa với tôi, nhưng nó giống như vậy. :-) – Braek

Trả lời

7

Bạn có một vài lựa chọn:

  • Bỏ qua nó. Những người sẵn sàng phá vỡ (ir) web (kinh nghiệm) bằng cách sử dụng một máy chủ proxy bị cấu hình sẽ phải tự giải quyết các hậu quả.
  • Yêu cầu quản trị viên proxy liệt kê danh sách trắng cho máy chủ lưu trữ của bạn hoặc phương thức mà máy chủ chấp nhận.
  • Viết lại API của bạn, "phá vỡ" nguyên tắc REST.
  • Sử dụng HTTPS, vì vậy proxy sẽ chỉ thấy phương thức kết nối.
+1

Tôi đã suy nghĩ về việc bỏ qua nó, vâng. Và nhận xét cuối cùng của bạn là hoàn toàn làm cho tôi chắc chắn về việc đi theo hướng đó. Hiện tại, API vẫn đang được phát triển và chúng tôi đang sử dụng HTTP, nhưng một khi nó đi vào sản xuất, chúng tôi sẽ sử dụng HTTPS, vì vậy khi proxy chỉ "thấy" phương thức CONNECT, tôi đoán vấn đề sẽ tự giải quyết .. . Cảm ơn vì những lời khuyên! :-) – Braek

+0

Có vẻ như chúng tôi có cùng một vấn đề (một khách hàng mà mọi thứ hoạt động tốt ở nhà nhưng yêu cầu PATCH không thành công tại văn phòng của mình), mặc dù ứng dụng và API của chúng tôi chỉ có sẵn trong HTTPS ... –

+0

@Maxime thật khó chịu , nhưng khách hàng có thể sử dụng chứng chỉ gốc tin cậy để thực sự tạo chứng chỉ khi đang di chuyển và giải mã tất cả lưu lượng truy cập HTTPS. – CodeCaster

Các vấn đề liên quan