我有一个使用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. ajax回调,http状态码和验证
- 3. HTTP状态代码
- 4. HTTP状态407:“HTTP状态407:代理服务器需要身份验证错误”时调用Web服务
- 5. 使用REST API返回HTTP状态码
- 6. Rest API返回HTTP状态代码
- 7. REST:映射404 HTTP状态代码
- 8. PHP:获取需要验证的远程网页的内容?
- 9. 在无状态REST Web服务环境中实现验证码
- 10. oracle.stellent.ridc.protocol.http.HttpProtocolException:HTTP状态:HTTP/1.1 401需要授权
- 11. HTTP状态适合“需要第三方认证”条件?
- 12. 后面的C#代码需要验证
- 13. 角$ http和状态码304
- 14. REST API设计的GET方法中的HTTP状态代码
- 15. 没有结果的REST搜索的HTTP状态码
- 16. NotFoundException的HTTP状态码500
- 17. GWT Requestfactory的HTTP状态码
- 18. symfony2/FOSRestBundle:没有HTTP状态码
- 19. PowerShell的HTTP POST REST API基本验证
- 20. 使用jQuery验证动态创建的内容验证插件
- 21. HTTP 1xx状态码
- 22. System.Net.WebException HTTP状态码
- 23. http状态码200
- 24. Response.Redirect HTTP状态码
- 25. 获取页面内容,需要身份验证在PHP
- 26. 网状HTTP基本验证
- 27. jQuery验证状态
- 28. React状态验证
- 29. 哪些http状态码用于REST服务中的外部API?
- 30. libcurl http验证码
REST与URI模式无关。 “REST风格的网址模式”完全是无稽之谈。我怀疑你的API只是RPC。 – aehlke 2009-07-22 19:42:00