当前位置: 首页 > 知识库问答 >
问题:

REST API:无效 JSON 的 HTML 通用错误响应

邓卓
2023-03-14

服务 X 托管 REST API,位于服务 Y 后面。

客户-

对于无效的 JSON,服务 Y 会使用 HTML 错误(如下所示)进行响应。服务 X 无法控制 Y。

<html>
<head><title>400 Bad Request</title></head>
<center><h1>400 Bad Request</h1></center>
</body>
</html>

对于所有其他类型的错误,X会使用适当的HTTP响应代码和错误JSON(以下格式)进行响应。

{
    "errorCode": "InvalidXXX",
    "message": ""
}
    < li >我正在尝试检查是否存在任何关于REST API错误响应标准的RFC? < li >如果服务返回错误响应并详细说明JSON无效,是否会有安全风险?

我试图了解我们是否可以将此特殊情况记录为客户的集成指南的一部分。

共有1个答案

仲智
2023-03-14

我正在尝试检查是否存在任何关于REST API错误响应标准的RFC?

REST是Fielding在他的论文的第五章中定义的一种架构风格,它没有提到错误的响应格式

我假设您正在通过HTTP执行REST,所以我建议您为每种情况选择最合适的状态代码。状态代码用于指示服务器试图理解和满足客户机请求的结果。

状态代码有时不足以传达有关错误的足够信息,以提供帮助,有效负载中发送的一些详细信息可以帮助客户机了解错误的原因。

如果您正在寻找IETF中用于报告错误的标准,您会发现最接近的可能是RFC 7807。此规范定义了简单的 JSON 和 XML 文档格式,以向客户端报告错误,以及应用程序/问题 json应用程序/问题 xml 媒体类型。

如果服务返回错误响应并详细说明JSON无效,是否存在安全风险?

当是客户端错误时,通知客户端错误是有意义的,这样他们可以修复错误并执行新的请求。但是,您不应该泄漏任何可能被恶意用户利用的堆栈跟踪或内部细节。

 类似资料:
  • 我有一个带有POST方法的REST API,它运行良好。但是在自定义400状态代码错误响应中,内容类型似乎是html而不是json。 样本: 400、79毫秒、23字节 api_status_code:SIM400-05连接:关闭内容类型:text/html;charset=UTF-8日期:周一,2022年6月13日14:31:15格林尼治标准时间传输编码:分块ords_debug:假 无效的帐号

  • 我在尝试获取gRPC API(使用C#)到blazor客户端时遇到了一个错误,一开始它工作得很好,但是在添加IdentityServer4并使用CORS for gRPC-Web之后,就像在文档中一样。下面是与错误相关的代码。 backend/startup.cs 后端/服务/用户服务.cs 前端/程序.cs 前端/Pages/Todolist.razor.cs 这是控制台的输出 这是尝试使用Id

  • 我有一个API网关设置,它带有一个调用Lambda函数的自定义授权程序。出于测试目的,我从这里复制了以下示例:http://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-create-api-as-simple-proxy-for-lambda.html#api-gateway-proxy-integration-

  • 我有一个实现REST API的spring boot应用程序。我有一个POSTendpoint,它通过接收一个对象,这个对象有几个字段,其中一些字段的类型为。我面临的问题是,当我接收到一个包含字母字符串作为long类型字段值的无效请求有效负载时,应用程序返回一个带有空有效负载的HTTP 400响应,但我希望能够自定义该响应(例如通过)并提供一些错误描述。然而,直到现在我都没能做到。 请求有效负载对

  • 问题内容: 哪种方法更快,要返回JSON中的ajax,然后处理JSON响应以呈现html,或者只是将Ajax响应中的原始html放在一堆中呢? 问题答案: 要看。在这两种情况下,服务器都只是返回带有文本的响应。如果响应的JSON版本比HTML版本需要更多字符,则该响应将需要更长的时间才能传输回客户端,反之亦然。 但是,当然还有服务器端脚本必须完成其工作。在您的情况下,从服务器端脚本生成JSON可能