标签: http-status-codes

403 Forbidden vs 401 Unauthorized HTTP响应

对于存在的网页,但对于没有足够权限的用户(他们未登录或不属于正确的用户组),要提供的正确HTTP响应是什么?401?403?别的什么?到目前为止,我对每个人的看法都不太清楚.哪些用例适合每个响应?

http-status-codes http-response-codes http-headers http-status-code-403 http-status-code-401

2544
推荐指数
18
解决办法
97万
查看次数

用于更新和删除的HTTP状态代码?

我应该为UPDATE(PUT)和DELETE(例如产品成功更新)设置什么状态代码?

http http-status-codes

1264
推荐指数
7
解决办法
66万
查看次数

REST HTTP状态代码,用于验证失败或重复无效

我正在使用基于REST的API构建一个应用程序,并且已经达到了为每个请求指定状态代码的程度.

对于未通过验证的请求或请求尝试在我的数据库中添加副本的情况,我应该发送什么状态代码?

我查看了http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html,但似乎没有一个是正确的.

发送状态代码时是否有通用做法?

rest http http-status-codes

782
推荐指数
8
解决办法
44万
查看次数

REST API服务为验证失败返回的适当HTTP状态代码是什么?

每当我在基于Django/Piston的REST API应用程序中遇到验证失败时,我目前正在返回401 Unauthorized .看过HTTP状态代码注册表后 我不相信这是验证失败的合适代码,你们都推荐什么?

  • 400错误请求
  • 401未经授权
  • 403禁止
  • 405方法不允许
  • 406不可接受
  • 412前提条件失败
  • 417期望失败
  • 422不可处理的实体
  • 424依赖失败

更新:上面的"验证失败"表示应用程序级别数据验证失败,即错误指定日期时间,虚假电子邮件地址等.

validation rest http-status-codes

373
推荐指数
5
解决办法
20万
查看次数

367
推荐指数
6
解决办法
20万
查看次数

400对422对数据POST的响应

我正在尝试使用我正在处理的"类似REST"的API来确定在不同场景下返回的正确状态代码.假设我有一个终点允许以JSON格式进行POST'ing购买.它看起来像这样:

{
    "account_number": 45645511,
    "upc": "00490000486",
    "price": 1.00,
    "tax": 0.08
}
Run Code Online (Sandbox Code Playgroud)

如果客户向我发送"sales_tax"(而不是预期的"税收"),我应该返回什么.目前,我要回400.但是,我已经开始质疑自己了.我应该真的回来422吗?我的意思是,它是JSON(支持)并且它是有效的JSON,它只是不包含所有必需的字段.

rest http-status-codes

323
推荐指数
5
解决办法
25万
查看次数

JAX-RS - 如何将JSON和HTTP状态代码一起返回?

我正在编写REST Web应用程序(NetBeans 6.9,JAX-RS,TopLink Essentials)并尝试返回JSON HTTP状态代码.我已准备好代码并且在从客户端调用HTTP GET方法时返回JSON.实质上:

@Path("get/id")
@GET
@Produces("application/json")
public M_?? getMachineToUpdate(@PathParam("id") String id) {

    // some code to return JSON ...

    return myJson;
}
Run Code Online (Sandbox Code Playgroud)

但是,我想用JSON数据一起返回的HTTP状态代码(500,200,204,等).

我试着用HttpServletResponse:

response.sendError("error message", 500);
Run Code Online (Sandbox Code Playgroud)

但这使得浏览器认为它是"真正的"500,因此输出网页是一个常规的HTTP 500错误页面.

我想返回一个HTTP状态代码,以便我的客户端JavaScript可以根据它处理一些逻辑(例如在HTML页面上显示错误代码和消息).这是可能的还是HTTP状态代码不能用于此类事情?

java rest jax-rs http-status-codes

237
推荐指数
8
解决办法
45万
查看次数

从Web Api控制器返回http状态代码

我正在尝试在web api控制器中返回未针对GET方法修改的304的状态代码.

我成功的唯一方法是这样的:

public class TryController : ApiController
{
    public User GetUser(int userId, DateTime lastModifiedAtClient)
    {
        var user = new DataEntities().Users.First(p => p.Id == userId);
        if (user.LastModified <= lastModifiedAtClient)
        {
             throw new HttpResponseException(HttpStatusCode.NotModified);
        }
        return user;
    }
}
Run Code Online (Sandbox Code Playgroud)

这里的问题是它不是一个例外,它只是没有修改,所以客户端缓存是好的.我还希望返回类型是User(因为所有web api示例都显示为GET)不返回HttpResponseMessage或类似的东西.

c# httpresponse http-status-codes asp.net-web-api

213
推荐指数
9
解决办法
25万
查看次数

HTTP状态代码200(缓存)与状态代码304之间有什么区别?

我正在使用谷歌的"Page Speed"插件来访问我的网站.

我页面上的一些组件表示为HTTP状态:

200 200(缓存)304

通过谷歌的"页面速度".

我困惑的是200(缓存)和304之间的区别.

我已多次刷新页面(但尚未清除我的缓存),似乎我的favicon.ico和一些图像状态= 200(缓存),而其他一些图像是http状态304.

我不明白为什么不同.

更新:

使用Google"Page Speed",我收到了http://example.com/favicon.ico的"200(缓存)" 以及http://cdn.example.com/js/ga.js

但是,我收到http://cdn.example.com/js/combined.min.js的http状态"304"

我不明白为什么我有两个JavaScript文件位于同一目录/ js /中,一个返回http状态304,另一个返回200(缓存)状态代码.

caching http cache-control httpwebrequest http-status-codes

194
推荐指数
4
解决办法
16万
查看次数

抛出HttpResponseException还是返回Request.CreateErrorResponse?

在查看ASP.NET Web API中的文章异常处理之后,我对于何时抛出异常vs返回错误响应感到困惑.我还想知道当你的方法返回特定于域的模型而不是HttpResponseMessage... 时是否可以修改响应

所以,在这里回顾一下我的问题,然后是一些带有#s的代码:

问题

关于案例#1的问题

  1. 我应该总是使用HttpResponseMessage而不是具体的域模型,以便可以自定义消息吗?
  2. 如果要返回具体的域模型,是否可以自定义消息?

关于案例#2,3,4的问题

  1. 我应该抛出异常还是返回错误响应?如果答案是"它取决于",你能否提供关于何时使用一个与另一个的情况/例子.
  2. 投掷HttpResponseExceptionVS有Request.CreateErrorResponse什么区别?输出到客户端似乎相同......
  3. 我是否应始终使用HttpError"包装"错误中的响应消息(是否抛出异常或返回错误响应)?

案例样本

// CASE #1
public Customer Get(string id)
{
    var customer = _customerService.GetById(id);
    if (customer == null)
    {
        var notFoundResponse = new HttpResponseMessage(HttpStatusCode.NotFound);
        throw new HttpResponseException(notFoundResponse);
    }
    //var response = Request.CreateResponse(HttpStatusCode.OK, customer);
    //response.Content.Headers.Expires = new DateTimeOffset(DateTime.Now.AddSeconds(300));
    return customer;
}        

// CASE #2
public HttpResponseMessage Get(string id)
{
    var customer = _customerService.GetById(id);
    if (customer …
Run Code Online (Sandbox Code Playgroud)

c# exception-handling http-status-codes asp.net-web-api

171
推荐指数
5
解决办法
13万
查看次数