我正在開發一個API,它也會有一個認證/授權組件。我應該向沒有足夠訪問權限的REST API用戶返回401或405響應代碼嗎?
無論身份驗證狀態如何,任何人都可以寫入(POST),但取決於您是否未經身份驗證,是否以普通用戶身份進行身份驗證或身份驗證爲管理員以及您嘗試訪問哪些資源我要爲GET,DELETE和PUT返回不同的響應。
我試圖找出未經過身份驗證和/或授權的用戶的最合適的響應代碼。
記住http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html:
未授權 - > 401
禁止 - > 403
不允許的方法 - > 405
讓我們用一個具體的例子:
- John Doe未經認證,DELETE應該收到401還是405?
- 艾米已通過身份驗證但未獲得授權,對DELETE她是否應該收到403或405?
(請記住,即使約翰和艾米是被禁止的或未經授權的,這並不意味着他們arent能夠與不同的HTTP動詞來訪問相同的資源。)
感謝。
另請參閱http://stackoverflow.com/questions/3297048/403-forbidden-vs-401-unauthorized-http-responses – Ryan
所以約翰應該得到一個401,艾米應該得到一個403. – Ryan
405方法不允許似乎[完全不相關](http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html)。 – Ryan