2015-09-26 71 views
2

從語義上講,API應返回適合該情況的錯誤消息。例如,如果一個用戶發出請求到GET /article/2386,它應該返回(在用戶需要身份驗證,請求API來處理權限管理):處理禁止的REST請求403 vs 404

  • 文章的數據,如果它存在,並且用戶有權限,
  • 404如果不存在,則會顯示錯誤消息
  • 403如果用戶沒有權限,則會顯示錯誤消息並被禁止。

現在,我不知道,如果它不是明智返回403在這兩種情況下禁止,作爲一個邪惡的用戶都可以嘗試隨機地掃描資源並得到他們是否存在見解與否(403,如果存在的話,404如果他們不「T)。

那麼,在這兩種情況下返回403還是「犯罪」是可取的?

回答

2

我以前遇到過很多像這樣的情況,如果他們沒有權限,我通常會去404ing的其他路由。我的理性存在沒有您可以查看的ID 2386的文章,因此NotFound。我喜歡這一點,而不是「你沒有權限查看不存在的東西」。

至於「它是犯罪的」,我會說不。我遠離RESTefarian,但我認爲REST是讓消費者更直觀的指南。如果安全意味着你需要改變一點點,那就這樣吧。另外,這是否真的使它不那麼直觀?

我希望這有助於:)。

+0

感謝您的回答。我還發現這個[很有用的文章](http://www.bennadel.com/blog/2400-handling-forbidden-restful-requests-401-vs-403-vs-404.htm)觀點中的觀點 – Buzut