标签: http-status-codes

lighttpd:404 页面不返回 404 状态

我正在使用带有静态 404 页面的 lighttpd 404 错误处理程序。整个 conf 文件如下所示:

server.document-root = "/home/www/local/www/mysite/html"
url.rewrite = (
  "^(.*)/($|\?.*)" => "$1/index.html",
  "^(.*)/([^.?]+)($|\?.*)$" => "$1/$2.html"
)
server.error-handler-404 = "/404.html"
$HTTP["scheme"] == "http" {
  url.redirect = ( "^/blog.html$" => "/blog/",
       // various individual redirects
  )
}
$HTTP["scheme"] == "https" {
  $HTTP["url"] !~ "^/blog/admin/" {
    url.redirect = ( "^/(.*)" => "http://www.mysite.com/$1" )
  }
}
Run Code Online (Sandbox Code Playgroud)

但是,当我转到一个应该是 404 的地址时,我确实正确地看到了我们的 404 页面,但状态代码是 200。

lighttpd的文档说,你应该如果使用的是静态页面得到404个状态码。

我认为我们正在使用静态页面,但是我们重定向的方式是否意味着我们实际上不是?

对不起,新手问题。

webserver lighttpd http-status-codes http-status-code-404

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

如何使用typoscript发送HTTP状态代码?

当某些条件满足时,我想向用户发送"403 Forbidden"HTTP状态代码,但我在typoscript中找不到任何修改HTTP头的可能性.我错过了什么,或者这是不可能的typoscript?

我正在使用Typo3 4.5.6.

typo3 http-status-codes http-headers typoscript

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

Http 状态码 412 是否适合基于我们域中定义的规则的错误

我有一个返回Voucher对象的 api 端点。

凭证是从第三方检索的。

有一些条件,例如过期日期,我们检查/验证。
因此,如果客户端应用程序请求/voucher/1234从第三方检索 ID 为 1234 的凭证。

如果过期日期 < 现在,我们需要返回一个错误。

我想返回标准的 HTTP 错误。

哪个会最合适?
我最初认为 412 会是,但现在我不确定。

rest http http-status-codes asp.net-web-api http-status-code-412

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

为什么 HTTP 错误代码从 100 开始

在处理最近的 REST api 时,我有一个问题,为什么“IANA”决定让 HTTP 状态代码仅来自 100 而不是来自 1。我希望这背后有一个原因,但我很想知道这一点。

standards specifications http http-status-codes

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

如果资源不可用于请求的操作,HTTP 状态代码应该是什么?

我正在开发一个 RESTful API。我对在这种特殊情况下设置 HTTP 状态代码感到困惑。我不确定我(服务器)应该返回什么状态代码。

假设我的应用程序具有关注用户功能,如果我已经关注用户并再次发送相同用户 ID 的关注请求,那么在这种情况下,来自服务器的 HTTP 状态代码应该是什么。状态代码后会出现一条错误消息,内容类似于:“已经关注用户”。

对于取消关注用户功能,可以考虑类似的情况,如果我没有关注用户“A”,我仍然向取消关注用户“A”发送请求,那么服务器应该返回什么 HTTP 状态代码并带有类似“不关注用户”之类的错误消息取消关注”

肯定 200 响应代码在这里对我来说似乎不合适?还是呢?

如果我在错误的堆栈交换站点上发布了问题,请原谅我,我将其发布在 stackoverflow 站点中只是因为它与 REST API 相关。

编辑

从客户端用户需要向 URL 发送 POST 请求:

http://www.myserver.com/api/follow/10
Run Code Online (Sandbox Code Playgroud)

以及在服务器端提供请求之前用于身份验证的其他必要参数(如 API 密钥、正确的标头等)。

取消关注操作的类似 URL 是:

http://www.myserver.com/api/unfollow/10
Run Code Online (Sandbox Code Playgroud)

现在,如果客户端发送关注请求,我将发送 HTTP 状态代码 200 作为响应,假设用户 ID 为 10,即使他/她已经关注 ID 为 10 的用户。在这种情况下,连同状态代码(200 ) 我正在发送类似于“已关注用户”的消息

不知何故,我觉得这并不令人信服,因为没有创建/更新资源,它应该返回带有正确状态代码的错误消息,而不是 200,可能是 4XX 中的一个,不确定。

api rest http http-status-codes

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

无法将 200 返回给 Stripe Webhook

我正在尝试测试从 Stripe 接收 JSON webhooks。

我读过了:

Rails 上的 Stripe Webhook

https://stripe.com/docs/webhooks

他们需要 200 状态响应才能确认收到。

我想在继续处理 JSON 之前解决这个问题。

路线

post 'webhook'       => 'web_hook#webhook'
Run Code Online (Sandbox Code Playgroud)

控制器

Stripe.api_key = "sk_test_whatsupbuttercup"
class WebHookController < ApplicationController
  protect_from_forgery :except => :webhook

  def webhook
    render status: 200
  end

end
Run Code Online (Sandbox Code Playgroud)

使用此设置,当我测试 webhook 时,Stripe 收到 500 错误。

ruby-on-rails http-status-codes webhooks stripe-payments

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

如果表单提交包含验证错误,我是否应该以 400 错误响应?

在经典的基于表单的 web 应用程序中,如果用户提交包含验证错误的 HTML 表单,假设没有 JavaScript,那么正确的做法是什么?

  1. 响应 HTTP 200 + 页面内容(包括用户的错误信息)
  2. 响应 HTTP 400 + 页面内容(包括用户的错误信息)

有关系吗?

html forms http http-status-codes web

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

自定义错误一旦部署在 IIS 上就不能在本地工作

我有以下几点:

Web.config

<system.web>
<authentication mode="None" />
<compilation debug="true" targetFramework="4.5" />
<httpRuntime targetFramework="4.5" />
<customErrors mode="On" defaultRedirect="~/Error/ShowError">
  <error redirect="~/Error/ShowError/400" statusCode="400" />
  <error redirect="~/Error/ShowError/401" statusCode="401" />
  <error redirect="~/Error/ShowError/403" statusCode="403" />
  <error redirect="~/Error/ShowError/404" statusCode="404" />
</customErrors>
</system.web>
Run Code Online (Sandbox Code Playgroud)

ErrorController

[AllowAnonymous]
public class ErrorController : Controller
{
    public ViewResult ShowError(int id)
    {
        Response.StatusCode = id;
        switch (id)
        {
            case 400:
                return View("~/Views/Error/400.cshtml");
            case 401:
                return View("~/Views/Error/401.cshtml");
            case 403:
                return View("~/Views/Error/403.cshtml");
            case 404:
                return View("~/Views/Error/404.cshtml");
            default:
                return View("~/Views/Error/404.cshtml");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

FilterConfig

    public static void RegisterGlobalFilters(GlobalFilterCollection …
Run Code Online (Sandbox Code Playgroud)

c# asp.net asp.net-mvc web-config http-status-codes

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

当客户端尝试更新在客户端过时的数据实体时,哪种 HTTP 状态代码是合适的?

我已经构建了一个 API,其中客户端将指示服务器更新数据库中的某个实体,并且它必须容纳多个用户尝试对同一数据实体进行操作,可能是在“同时”。

这是一个分布式用户竞争条件问题。(类似于 Wordpress 在其他用户编辑博客文章时处理“锁定”博客文章的方式。)


示例数据实体

{
    versionID : 12345,
    type : "building",
    name : "The CN Tower"
}
Run Code Online (Sandbox Code Playgroud)


操作数据实体

例如,客户端将告诉服务器任何给定实体updatename属性。

为了处理试图更改同一实体的多个用户 - 不会让用户意外覆盖彼此的更新 - 每个用户必须随其update请求一起发送versionID(也可能称为 a stateID)它从服务器获取的数据库实体加载到 UI 中(或者在 CLI 应用程序的情况下存储在客户端)。

这样,如果Client A之前更新过建筑物Client B,服务器将能够告知Client B他们的更新请求已失败,因为他们尝试更新的建筑物不是数据库中此类记录的当前(规范)状态。


问题

当任何用户尝试更新已由其他用户在此期间更新的数据库记录时,来自服务器的正确 http状态代码是什么?

http http-status-codes http-response-codes

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

服务器端如何响应不同的验证错误?

我是第一次开发网站,我选择使用 mongodb、node、express 和 angular,即 MEAN 堆栈。我正在研究的前几个功能之一是一个简单的表单,目前手头的任务是表单验证。我对如何验证表单提交进行了大量研究,并了解有必要同时实现客户端和服务器端验证。出于各种原因但主要是安全性的客户端验证和服务器端验证以获得更好的用户体验。

但是,我面临的问题是我应该如何响应将表单数据提交到我的 REST API 时可能出现的不同错误。我想知道可能出现的每种情况以及如何处理每种情况,例如要响应的状态代码以及我是否应该提供特定的错误消息?

编辑: 我会添加一些更具体的问题,但请不要将您的回答限制在这些问题上

1)我可以假设没有客户要求的字段的请求实际上不是来自我的客户并且很可能是对手,所以我应该只发送“错误请求(400)”而不提供任何错误消息?
2)对于验证错误,例如缺少必填字段或格式不正确的字段,我是否应该使用除 200 以外的任何其他状态代码?我问这个是因为当我发送 4XX 响应时,我的浏览器控制台中会生成一个错误,而当网站的行为正常时,这似乎不正确。

我希望我说清楚了。如果没有,请告诉我,以便我可以尝试更具体。

forms validation error-handling server-side http-status-codes

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