我有一個使用RESTful url模式的web應用程序。目前,如果用戶試圖訪問他們需要進行身份驗證的頁面,它只會返回任何內容。在這種情況下返回HTTP狀態代碼是否是一種好的做法?我會使用403還是不同的?需要驗證的內容的REST http狀態碼?
回答
您應該使用HTTP狀態碼發送響應。
我不會派一個403禁止回來,雖然作爲該規範規定了這個狀態代碼:
服務器理解了請求,但 拒絕執行它。 授權不會幫助和 請求不應該重複
返回401未授權狀態代碼,而不是。看到這個更多信息的狀態代碼:
http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
我這樣做與新澤西的方法是發送與狀態的響應,然後包括其中包含人類可讀的消息的字符串實體,例如
Response response = Response.status(Status.PRECONDITION_FAILED).entity(
new String("Incorrect " + id + " [" + id + "]")).build();
這會顯示給客戶端。我拋出了一個包裝這個響應的Jersey WebApplicationException。
感謝喬恩,這是最有幫助的。 – 2009-07-15 20:19:21
如果他們沒有權限返回401給他們機會迴應認證挑戰或403如果你不想讓他們。
Restlet 1.1向前返回403,而早期版本返回401。403似乎被認爲更正確,如果不一定更有幫助。
這要看。當然,你真的應該回報一些東西,只是爲了獲得體面的客戶體驗。如果您想讓他們有機會在此時進行身份驗證,則可以返回401,並且客戶端將知道使用標準身份驗證來傳遞憑據。但是,如果您希望通過某種其他機制進行身份驗證(某些登錄URL,然後設置cookie或其他機制),則返回403可能是一種方法。
lol ...在REST API實現中,我剛剛構建了一個響應體,它返回一個401狀態碼,該響應體讀取「再見」。是與API交互的人抱怨的第一件事。我仍然認爲「再見」這樣說; )
- 1. REST的4xx http狀態碼
- 2. REST驗證失敗或無效重複的HTTP狀態代碼
- 3. REST API:身份驗證違規的HTTP狀態代碼
- 4. ajax回調,http狀態碼和驗證
- 5. HTTP狀態代碼
- 6. HTTP狀態407:「HTTP狀態407:代理服務器需要身份驗證錯誤」時調用Web服務
- 7. REST:映射404 HTTP狀態代碼
- 8. Rest API返回HTTP狀態代碼
- 9. 使用REST API返回HTTP狀態碼
- 10. HTTP狀態碼。什麼是空參數的最佳狀態碼?
- 11. 我需要把驗證碼?
- 12. PHP:獲取需要驗證的遠程網頁的內容?
- 13. HTTP狀態碼和json內容的帳戶限制?
- 14. HTTP狀態400 - 需要短參數「分數」是不存在的,Spring MVC的REST
- 15. 在無狀態REST Web服務環境中實現驗證碼
- 16. UrlFetchApp.fetch - 需要HTTP響應狀態
- 17. oracle.stellent.ridc.protocol.http.HttpProtocolException:HTTP狀態:HTTP/1.1 401需要授權
- 18. 需要驗證
- 19. HTTP狀態適合「需要第三方認證」條件?
- 20. 靜態內容不應該需要會話狀態
- 21. 後面的C#代碼需要驗證
- 22. 什麼HTTP狀態代碼將代表已認證但需要接受條款
- 23. HTTP狀態碼411 - 所需長度
- 24. 角$ http和狀態碼304
- 25. HTTP狀態碼406
- 26. 我需要$ HTTP POST狀態代碼400,但得到200
- 27. 沒有結果的REST搜索的HTTP狀態碼
- 28. REST API設計的GET方法中的HTTP狀態代碼
- 29. 糾正不可滿足的REST請求的HTTP狀態代碼
- 30. PUT的HTTP狀態代碼
REST與URI模式無關。 「REST風格的網址模式」完全是無稽之談。我懷疑你的API只是RPC。 – aehlke 2009-07-22 19:42:00