标签: http-status-codes

未激活帐户的HTTP状态代码是什么?

我应该在对用户进行身份验证之后回复哪个HTTP状态代码,然后发现他们在注册后没有激活他们的帐户?

http httpresponse http-status-codes

15
推荐指数
1
解决办法
5968
查看次数

资源创建POST由于现有匹配资源而失败时的HTTP响应代码

想象一下,我们有一个API,可以通过POST创建一个新的Employee

www.example.com/api/employees
Run Code Online (Sandbox Code Playgroud)

一名员工可以被描述为,

{
  name: "John Smith",
  tax_number: "ABC123"
}
Run Code Online (Sandbox Code Playgroud)

税号对所有人来说都是独一无二的.如果创建了一个创建,并且已存在一个名称和税号与现有记录匹配的记录,则可以安全地假设请求者想要返回该记录的引用(使用它的内部id和其他数据,客户端可能不会有,例如,创建于,更新于).

HTTP状态代码用于返回该资源的内容是什么?我想重定向可以用于返回id,但我更喜欢将整个对象包含在响应中.

这种情况对于简单的重复错误是唯一的,因为如果尝试重复,则意味着您希望创建的记录已经存在 - 而不是与现有记录冲突.

api rest post http http-status-codes

15
推荐指数
1
解决办法
1万
查看次数

获得HttpStatusCode为0

如果我将客户端连接的服务指向错误的URL,为什么我得到的HttpStatusCode为0.

我的statusCodeAsInt显示为0.为什么它没有显示为404并正在处理?

IRestResponse response = client.Execute(restReq);
HttpStatusCode statusCode = response.StatusCode;

var statusCodeAsInt = (int) statusCode;

        if (statusCodeAsInt >= 500)
        {
            throw new InvalidOperationException("A server error occurred: " + response.ErrorMessage, response.ErrorException);
        }
        if (statusCodeAsInt >= 400)
        {
            throw new InvalidOperationException("Request could not be understood by the server: " + response.ErrorMessage,
                response.ErrorException);
        }
Run Code Online (Sandbox Code Playgroud)

处理此RestResponse的正确方法是什么?

c# rest http http-status-codes http-status-code-404

15
推荐指数
3
解决办法
1万
查看次数

如何以编程方式在ASP.NET应用程序中设置不同于200 OK的Response.StatusCode并仍然成功向客户端提供内容?

设置Response.StatusCode = 404不提供IE8和Chrome下的内容?虽然我发现它很奇怪但它在Mozilla中有效!

做最简单的事情 - 使用空的Default.aspx页面清空asp.net Web应用程序项目.在Page_Load事件中使用以下内容:

protected void Page_Load( object sender, EventArgs e )
{
    Response.StatusCode = 404;
}
Run Code Online (Sandbox Code Playgroud)

这有效地将当前请求的状态代码设置为404,毫无疑问.在IE8或Chrome下渲染时,或者也可能是其他一些浏览器 - 我还没有测试过,实际页面根本没有显示.这些浏览器显示其默认的404错误页面(不是默认的IIS自定义错误).IE8中的示例:

The webpage cannot be found 
 HTTP 404  
   Most likely causes:
•There might be a typing error in the address.
•If you clicked on a link, it may be out of date. ... and so on ...
Run Code Online (Sandbox Code Playgroud)

我真正想要做的是提供404错误页面,其中包含404错误代码,实际上会告诉浏览器或爬虫或者此页面不存在的任何人 - 不仅要显示一些带有状态消息的精美自定义错误消息200 OK .

使用fiddler表明我实际上真的在服务请求,但是浏览器完全无视它?!

我的问题 - 如何设置404状态代码并仍然呈现页面内容?示例 - http://www.intel.com/invalidpage.wow.使用fiddler显示此页面提供404状态代码.

asp.net httpresponse http-status-codes

14
推荐指数
1
解决办法
1万
查看次数

抓住PHP致命错误

我有一个启用了restful的Web服务站点,因此其他网站/ ajax脚本可以调用该站点来获取/设置数据.但是,每当Web服务站点以某种方式返回PHP致命错误时,返回的HTTP状态为200而不是500.是否有办法修复它,以便每当发生致命错误时,返回500而不是200?或者,如果不可能,我如何更改我的客户端以识别Web服务返回的致命错误?

php http-status-codes

14
推荐指数
2
解决办法
2万
查看次数

完整的HTTP状态代码列表,不包括响应机构

我开始喜欢HTTP,直到我发现一些状态代码like 304,不包含消息体并由CRLF终止.

哪里是全面的清单?到目前为止,我有:100-199,204,和304.还有其他人吗?

编辑:不,不符合标准.谢谢你的回答.

我关注持久连接的消息分隔.即一个HTTP消息停止在哪里,下一个开始.

http-status-codes

14
推荐指数
1
解决办法
5525
查看次数

纠正现有资源的HTTP状态代码,但不存在实体?

假设客户端请求以下URL:

/user-details?user=123
Run Code Online (Sandbox Code Playgroud)

如果/user-details是不存在的资源,则显然是正确的状态代码404.

但是,如果/user-details确实存在,但不存在具有id的用户123:

  • 到目前为止404 Not Found,我已经退回了一个,但经验告诉我,不知道它是资源还是未找到的实体令人困惑;
  • 我考虑过使用400 Bad Request,但我觉得它也很混乱,因为请求在技术上是正确的,只是请求一个不存在的实体.

是否有更合适的HTTP状态代码用于此目的?

http http-status-codes

14
推荐指数
3
解决办法
1万
查看次数

在AJAX请求之后,Chrome会在HTTP 205响应中下载重新加载的页面

在项目上工作,我只是发出一个AJAX请求来处理一些数据.
完成作业后,服务器将返回HTTP 205 RESET CONTENT响应

我使用此状态代码告诉请求者重置文档视图

这是我使用的代码片段

$.ajax({
    url: '/unread',
    method: 'PUT',
    data: {
        notifications: elements
    }
}).done(function(content, message, xhr) {
    if (205 !== xhr.status) {
        // Generic error message
        return;
    }

    window.location.reload(true)
}).fail(function() {
    // Generic error message
})
Run Code Online (Sandbox Code Playgroud)

这适用于Internet Explorer (8及以上版本),Firefox (28.0)和Opera (12.16).但是Chrome (33.0)和Opera (20.0)不是刷新页面,而是在调用时下载正在重新加载dump的页面的响应内容window.location.reload

这是我尝试过的

  • window.location.href = window.location.href 给出相同的结果
  • history.go(0) 给出相同的结果
  • 如果删除window.location.reload,则不会重新加载任何内容
  • 清除缓存,删除本地状态或进入私有导航不会改变任何内容
  • 如果我更改响应代码(例如204),它可以正常工作

这是正在发生的事情的视觉网络

Chrome即可下载

附加信息(以及更深入的调查)

  • 我在Ubuntu 12.04上
  • 使用Windows 7(相同的chrome版本)可以在另一台计算机上重现错误
  • 使用Debian …

javascript ajax google-chrome http-status-codes

14
推荐指数
1
解决办法
929
查看次数

如何在ASP.NET MVC RC1中使用FileResult返回304状态

您可能知道我们在RC1版本的ASP.NET MVC中有一个名为FileResult的新ActionResult.

使用它,您的操作方法可以动态地将图像返回到浏览器.像这样的东西:

public ActionResult DisplayPhoto(int id)
{
   Photo photo = GetPhotoFromDatabase(id);
   return File(photo.Content, photo.ContentType);
}
Run Code Online (Sandbox Code Playgroud)

在HTML代码中,我们可以使用以下内容:

<img src="http://mysite.com/controller/DisplayPhoto/657">
Run Code Online (Sandbox Code Playgroud)

由于图像是动态返回的,我们需要一种方法来缓存返回的流,这样我们就不需要再次从数据库中读取图像.我想我们可以用这样的东西来做,我不确定:

Response.StatusCode = 304;
Run Code Online (Sandbox Code Playgroud)

这告诉浏览器您已在缓存中拥有该图像.在将StatusCode设置为304后,我只是不知道在我的action方法中返回什么.我应该返回null还是什么?

asp.net-mvc caching http-status-codes

13
推荐指数
2
解决办法
7613
查看次数

GraphQL API 中的 HTTP 状态代码处理

很多资源都说,GraphQL 应该始终以 200 状态代码响应,即使发生错误:

因为 GraphQL 可以在一个响应中返回多个响应,所以这是有道理的。当用户在一个请求中请求两个资源,并且只能访问第一个资源时,您可以发回第一个资源并forbidden为第二个资源返回错误。

然而,这只是我在阅读多个 GraphQL 库和博客文章的文档的过程中想到的。我在官方规范中没有找到任何关于 HTTP 状态代码的信息,这里是https://spec.graphql.org/或这里是https://graphql.org/

所以我还有几个问题:

  1. 如果出现意外的服务器错误,是否可以返回 HTTP 500 状态代码?
  2. 如果凭据错误,是否可以返回 HTTP 401 状态代码?
  3. 我是否应该像这样在 GraphQL 响应的键中包含潜在的HTTP 状态代码errors
{
  "errors" => [{
    "message" => "Graphql::Forbidden",
    "locations" => [],
    "extensions" => {
      "error_class" => "Graphql::Forbidden", "status" => 403
    }
  }]
}
Run Code Online (Sandbox Code Playgroud)
  1. 我应该将常见错误(如错误的字段名称)与 HTTP 状态代码匹配400 Bad Request吗?
{
  "errors" => [{
    "message" => "Field 'foobar' doesn't exist on type 'UserConnection'",
    "locations" …
Run Code Online (Sandbox Code Playgroud)

http-status-codes graphql

13
推荐指数
1
解决办法
5925
查看次数