问题标签 [http-status]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
39 浏览

http - 哪个 HTTP 状态代码应指示由于无效输入而未能执行某些代码?

我有一个需要用户 ID 的 POST 请求。如果找到该用户 id,则一切都成功执行,并返回默认的 http 代码(即 200)。如果没有找到用户ID,我应该返回什么?4xx 似乎都不能满足我的要求。

0 投票
1 回答
85 浏览

rest - 当未提供或不匹配时,适用于额外身份验证步骤的 http 状态代码

问题

应用程序希望客户端Authorization在大多数路由上发送带有访问令牌的标头。现在有一个新功能,一些新的少数路由不仅需要请求Authorization头,还需要pin请求正文中包含 6 长度字符串的属性。如果该pin值与用户存储在数据库中的值不匹配pin,则应拒绝该请求。

由于用户已通过身份验证(它在标头中发送了有效的访问令牌Authorization)但发送了错误的值,应该使用哪个状态代码来拒绝请求pin

语境

此应用程序现在将支持支付,并且在请求正文中需要该pin属性的路由是进行支付的路由,因此它们在应用程序内花费用户的积分。这就是为什么它只需要pin在几条路线上发送。

我认为的解决方案

  1. 由于正文 422 Unprocessable Entity中的值错误,无法处理请求,因此请使用。pin
    • 问题:当其他一些验证失败时也会发送状态码422,所以看起来不正确,因为它pin与授权更相关。
  2. 使用401 Not Authorized错误pin值意味着用户未能提供所有正确的凭据。
    • 问题:到目前为止,用户实际上为应用程序在每条路由上所期望的内容提供了正确的凭据。在新功能之后,被视为在应用程序中进行身份验证所需的凭据将不匹配。现在401将意味着两种错误,而不是仅对用户进行身份验证
  3. 使用403 Forbidden.
    • 问题:虽然用户是不允许的,但这不是角色权限的问题。

pin额外的问题:在标头而不是正文中发送是否更好?

0 投票
1 回答
27 浏览

rest - “登录并尝试注册”的 HTTP 响应

假设 REST 客户端已登录并尝试注册,在这种情况下,服务器会忽略该请求。这里应该返回什么状态?

0 投票
1 回答
1213 浏览

python - 使用 Scapy 从 pcap 获取 HTTP 响应代码

我正在阅读一个 pcap 文件,scapy并且我有兴趣查找异常,例如异常的 TCP 标志或 HTTP 代码403429

我能够使用 TCP 端口找出该流量属于 HTTP,但是如何获取 HTTP 的状态代码和 TCP 的标志?

这是我到目前为止所做的:

0 投票
1 回答
139 浏览

php - SendGrid 不发送电子邮件并返回 0 数组( [0] => )

我在我的 PHP 应用程序中使用 SendGrid 向我的用户发送电子邮件,以便他们可以重置密码。问题是,在 localhost 上一切正常,但是当我将文件传输到服务器时,我打印了以下响应0 Array ( [0] => )我在Network上检查时收到的状态代码响应是 200 OK,在 SendGrid 上这意味着Your message is valid, but it is not queued to be delivery 。我不知道为什么会这样,有什么帮助吗?

0 投票
0 回答
72 浏览

json - 如何强制 Nancy 对整数使用 application/json 响应?Nancy 假设它们是 StatusCode

我发现这个线程Override the default Content-Type for response in NancyFx并会在那里发表评论,但还没有达到 50 个代表的要求,因为这是我潜伏多年后的第一个帐户。

因此,如果这个问题不能证明独立线程的合理性,请多多包涵。恐怕我无法仅使用搜索来解决此问题。进入主题...

--> 如果我有一个返回对象或 json 字符串的路由,那么返回它就没有问题。例如,在 NancyModule

返回正确序列化的对象。如果我连接到 AfterRequest 管道,我可以看到这context.Response.StatusCode是预期OK的 。context.Response.ContentType"application/json; charset=utf-8"

现在,如果我有一个只返回一个整数的路由,如下所示:

然后南希显然将该 ID 作为 HttpStatusCode。AfterRequest 管道现在显示它context.Response.ContentType"text/html"并且context.Response.StatusCode是我希望成为实际内容的 Id。

当我调用路线时,GET /patient/new我希望它只返回 ie 42,不返回"42"或其他一些符号。有没有办法配置南希以这种方式返回我的 ID?

0 投票
0 回答
73 浏览

php - 在 PHP 中检测 413(或其他 HTTP 状态)

我使用 POST 或 PUT 方法将数据发送到网络服务器(服务器是 FreeBSD、Apache httpd、php72)。

我想在我的 PHP 脚本中检测 413(太大)。但是 var_dump(http_response_code()); 即使我上传的数据太大也给出 200(Apache httpd 用它的 413 页面回答,我的脚本也被执行)。

var_dump($_SERVER); 413 也没有显示任何内容。

如何在我的脚本中检测像 413 或任何其他的 http 状态?是否可以让我的脚本输出错误消息,而不是 apache?

我的 php 脚本看起来像这样

我用这个命令上传文件

apache 在我的 php-script-output 中添加一些错误消息对我来说没有多大意义。任何一个用户都应该收到一条错误消息我的脚本的输出。但不是同时。

如果我在 php 中检测到这个 413,我可以输出一些有意义的消息并退出脚本。

解决方案

我发现如果我使用https://上传文件,如果文件太大,apache 不会调用我的 php 脚本。

只有当我使用http:// apache 时才会显示错误文档执行 php 脚本。我完全不知道为什么会这样。但是...因为无论如何我都想使用https...对我来说问题已经消失了。

这是一个示例输出,以查看我的情况下 http 和 https 的差异(CustomErrorDocument 是 emtpy,所以除了标题之外没有错误输出显示在这里,在最终版本中,当然会有一个错误文档)

https调用中缺少“-->此处是不应执行的脚本的输出<--”行...它仅存在于http调用中。奇怪的...

注意:使用 https 会得到 HTTP/2 响应而不是 HTTP/1.1,但是,一定是我的 web 主机配置错误或 apache 中 HTTP/1.1 处理中的错误。因此,通过强制所有内容到 HTTPS 并在 .htacces 中使用 ErrorDocument 来解决问题,以按照@ÁlvaroGonzález 的建议在错误上显示自己的文档,为我修复了它(尝试使用 http 的用户将得到一个 301 Moved Permanently 错误,并带有正确的 https 链接)。为我工作。

谢谢

0 投票
1 回答
184 浏览

c# - 在 CefSharp C# 中加载 html 页面后,是否有可能获得状态代码,即 (200,301,302)?

在 CefSharp C# 项目中加载 HTML 网站后,我遇到了无法获得响应状态代码的问题。在浏览器中加载新页面后,会调用一些方法,例如 OnLoadingStateChange。

主要问题是我不知道如何获取与加载页面关联的状态响应代码(200,301,302 等)。怎么做?

0 投票
2 回答
465 浏览

spring - 如何强制 Spring Boot 将正确的 HTTP 状态代码设置为错误响应?

我制作了这个简单的 Spring Boot 应用示例来展示我在 Spring Boot 默认处理错误的方式方面的问题:

这是 Spring Security 配置:

这是 REST 控制器:

现在,Spring Boot 2.1.8.RELEASE当调用 URL 时,http://localhost:8080/我得到一个带有 500 代码的 HTTP 响应和以下 JSON 响应:

然而,HTTP 状态代码与预期不同(500 而不是 400),以及 JSON 中的各种字段(“状态”、“错误”、“消息”,前面有意外的“代码”)。

我也用Spring Boot 2.3.3.RELEASE...测试了这个,现在它甚至不再像以前那样工作了!!

所有这些都是通过诸如 和 的类/接口来处理ErrorControllerAbstractErrorControllerBasicErrorController全部设置在 中ErrorMvcAutoConfiguration)。显然有一个重定向到 URL/error的原始请求/和/或响应包装到其他东西中,例如我可以调试我的请求,如下所示:SecurityContextHolderAwareRequestWrapper[FirewalledRequest[org.apache.catalina.core.ApplicationHttpRequest@3751bea4]]

我发现我得到的 JSON 是通过一个名为的 bean 生成的,该 beanDefaultErrorAttributes从 key 下的请求中提取 HTTP 状态代码"javax.servlet.error.status_code"

我在那里读到:https ://github.com/spring-projects/spring-boot/issues/4694#issuecomment-163597864 (2015年12月):

问题实际上出在 BasicErrorController 中,并且特定于 HTML 响应。BasicErrorController.error 使用 ErrorPageFilter 设置的 javax.servlet.error.status_code 属性设置响应状态,但 BasicErrorController.errorHtml 没有。这导致 text/html 错误响应的状态为 200 OK。

事实上,就我而言,ErrorPageFilter从未调用过。

在 Spring Boot 项目上还发现了另一个问题:https ://github.com/spring-projects/spring-boot/issues/20412这与我的问题非常相关,但仍然没有提供解决方案。

回到我的控制器的设计方式(请记住,这只是一个极其简化的示例):如何“自定义”Spring Boot 以获得带有代码 400 的 HTTP 响应和此 JSON 作为响应:

谢谢。

0 投票
1 回答
22 浏览

rest - 无法插入资源但可由客户端修复时的 HTTP 状态引用

我有一个要通过 POST 插入的资源;说预订。在某些情况下,服务器无法插入给定的对象,但需要向用户提供反馈,需要更改哪些内容才能插入它。例如,如果您发送包含以下内容的预订:

如果服务器看到座位 A5 已被占用,但想要返回在该时间范围内空闲的座位列表,我会使用什么?

409 Conflict 似乎有点像我想要的,因为在它的规范中你可以告诉用户出了什么问题。但我不确定这是否算作冲突。