2014-10-27 14 views
7

Projektuję interfejs webowy REST, ale ostatnio zauważyłem coś dziwnego.Jak radzić sobie z serwerami proxy, które blokują określone metody żądania HTTP?

Podobno niektóre serwery proxy blokują określone metody żądania HTTP. W moim przypadku metody PUT i PATCH, które są kluczowe dla modyfikacji zasobów. To częściowo psuje funkcjonalność interfejsu API, który projektuję ...

Czy istnieje dobry sposób na ominięcie tego problemu bez naruszania ograniczeń architektury RESTful? Moim zdaniem nie ma, bo w pełni za pomocą czasowników HTTP jest zalecane przy projektowaniu REST Web API nad HTTP ...

+0

Czyje to są proxy? Kto będzie używać Twojego API? – CodeCaster

+0

Najwyraźniej nasz wewnętrzny serwer proxy korporacyjny blokuje metody PUT i PATCH ... nie ma dla mnie sensu, ale tak po prostu jest. :-) – Braek

Odpowiedz

7

Masz kilka opcji:

  • zignorować. Ludzie, którzy chętnie łamią (ir) sieć (doświadczenie) za pomocą źle skonfigurowanego serwera proxy, będą sami musieli poradzić sobie z konsekwencjami.
  • Poproś administratorów proxy o dodanie do białej listy hosta lub metod, które akceptuje.
  • Przepisanie swojego API, "łamanie" zasad REST.
  • Użyj protokołu HTTPS, aby serwer proxy widział tylko metodę connect.
+1

Myślałem o tym, żeby to zignorować, tak. Twoja ostatnia uwaga całkowicie upewnia mnie, że pójdę w tym kierunku. Obecnie API jest wciąż w fazie rozwoju i korzystamy z protokołu HTTP, ale gdy przejdzie on do produkcji, i tak będziemy używać HTTPS, więc gdy proxy tylko "zobaczy" metodę CONNECT, myślę, że problem sam się rozwiąże ... . Dzięki za wskazówki! :-) – Braek

+0

Wygląda na to, że mamy ten sam problem (klient, dla którego wszystko działa dobrze w domu, ale żądanie PATCH nie powiedzie się w jego biurze), mimo że nasza aplikacja i API są dostępne tylko w HTTPS ... –

+0

@Maxime to jest paskudne , ale klient może użyć zaufanego certyfikatu głównego, aby faktycznie generować certyfikaty w czasie rzeczywistym i odszyfrowywać cały ruch HTTPS. – CodeCaster