2014-10-27 68 views
7

我正在設計一個REST web API,但最近發現了一些奇怪的東西。如何處理阻塞特定HTTP請求方法的代理服務器?

顯然有些代理服務器阻止特定的HTTP請求方法。在我的情況下,對修改資源至關重要的PUT和PATCH方法。這部分打破了我設計的API的功能......

有沒有一種很好的方法來繞過這個問題而又不破壞RESTful架構約束?在我看來沒有,因爲充分利用了HTTP動詞被設計在HTTP ...

+0

誰的代理?誰將使用你的API? – CodeCaster 2014-10-27 15:40:45

+0

顯然,我們的內部企業代理服務器阻塞了PUT和PATCH方法...對我來說沒有意義,但它就是這樣。 :-) – Braek 2014-10-27 15:44:39

回答

7

一個REST網絡API時,您有幾個選項主張:

  • 忽略它。那些願意使用配置不當的代理服務器來破壞網絡(經驗)的人必須自己處理這些後果。
  • 請代理管理員將您的主機或其接受的方法列入白名單。
  • 重寫您的API,「打破」REST原則。
  • 使用HTTPS,所以代理將只能看到connect方法。
+1

我在考慮忽略它,是的。而你最後的評論完全讓我確信朝着這個方向前進。目前API仍在開發中,我們正在使用HTTP,但是一旦它投入生產,我們將使用HTTPS,所以當代理只「看到」CONNECT方法時,我猜這個問題會自行解決。感謝提示! :-) – Braek 2014-10-27 15:48:01

+0

雖然我們的應用程序和API僅在HTTPS中可用,但它看起來像我們遇到了同樣的問題(一個客戶端在家中一切正常,但PATCH請求在其辦公室中失敗)... – 2016-11-10 09:25:42

+0

@Maxime這是討厭的,但客戶端可以使用受信任的根證書實時生成證書並解密所有HTTPS流量。 – CodeCaster 2016-11-10 09:28:58