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

删除向导 Rest API 的 JSON 正文开头的无效字符

从光启
2023-03-14

我已经用Dropwizard和Spring创建了一个基本的CRUD API。在我的响应对象的正文中,我收到了以下内容:

 )]}',
 {
  "id":10,
  "initiator":2,
  "target":1,
  "statusId":1,
  "created":"2018-04-30T14:45:01.173"
 }

在放心的测试过程中,我使用curl、postman和编程方式检查了API,无效字符)]}',总是存在。Postman似乎能够忽略它们并显示漂亮的打印输出,但请放心,我猜大多数JSON解析器都无法正确解析它。

问题:

  1. 它们是什么?
  2. 为什么会出现它们?
  3. 如何删除它们?

多年来,我一直在编写 REST API,但从未见过这样的东西。这是我第一次使用dlotwizard,所以我乐观地希望这是我错过的一些配置

除了无效字符之外,API在功能上运行良好。

这是一个继承的代码库,其他API也会返回这些字符。为了进行放心测试,在处理响应之前会过滤掉无效字符。虽然我认为这在短期内可以作为一种解决方案,但从长远来看,API的任何未来消费者都必须执行该解决方案,理想情况下,这将在API本身中修复。

共有1个答案

储嘉悦
2023-03-14

不知道滴水巫师,但它的存在是为了防止json劫持。在Spring有一个映射杰克逊2Http消息转换器类,
它具有相同的功能,但前缀不同“{}

/**
 * Indicate whether the JSON output by this view should be prefixed with "{} &&". Default is false.
 * <p>Prefixing the JSON string in this manner is used to help prevent JSON Hijacking.
 * The prefix renders the string syntactically invalid as a script so that it cannot be hijacked.
 * This prefix does not affect the evaluation of JSON, but if JSON validation is performed on the
 * string, the prefix would need to be ignored.
 */
public void setPrefixJson(boolean prefixJson) {
    this.prefixJson = prefixJson;
}

你可以理解这一点。

编辑1:Spring版本4.2.0.RELEASE以后,默认前缀已更新为)]}',

 类似资料:
  • 在启动使用与MySQL的数据库连接的Dropwizard应用程序时,我收到以下错误: 在Dropwizard配置文件的末尾,我有以下内容: 在我的配置类中,我有以下内容: 其他几个复杂的配置对象正在正确加载(这是一个相当大的配置文件),但这个没有。知道为什么我收到这个错误吗? 编辑这个问题类似于这个问题:读取YAML文件时出现无法识别的属性异常。然而,那个解决方案对我不起作用。

  • 我有一个http响应,其名称包含一个统一码字符(例如穆勒)。在IE11中,我收到一个错误,说“无效字符”,因为在IE11中,整个http响应似乎在angular的http响应中被读取为字符串,并且它试图将此字符串解析为JSON(而不是已经采用JSON格式)。但是在 JSON 字符串中,它看起来像这样: 问题是姓氏的一部分被去掉了,现在姓氏值少了一个右引号。我不介意它显示菱形问号,它只是完全打破了现

  • 问题内容: 当我走时,我收到以下错误消息: 安装的Docker版本: 使用以下方式安装: 我已确保网络存在并且可以访问其他站点。请帮忙 更新1:问题不能是设置MTU,因为几天后我可以从Docker集线器中将映像拉回到同一台机器上。 由于我在家庭网络中,因此该问题也可能不是HTTP_PROXY 问题答案: 该错误消息几乎没有误导性。问题不在于字符无效,而是网络配置错误。我有一个LAN接口和一个WLA

  • 问题内容: 我有一个看起来像这样的字符串: 我如何删除第一个; 但只有在字符串的开头找到它? 使用,将删除 所有 。 问题答案: 普通格式,不带正则表达式: 花费: 0.0369毫秒 (0.000,036,954秒) 与: 注意到: 0.1749毫秒 (0.000,174,999秒)第一次运行(编译),和 0.0510毫秒 (0.000,051,021秒)之后。 显然,已在我的服务器上进行了分析。

  • 问题内容: 我刚刚编写了第一个Go应用程序,该应用程序通过http下载并解组了简单的JSON对象。Http内容被压缩: 我用几个众所周知的例子(如此)。不幸的是,应用程序无法解析所需的JSON,并且出现了非常罕见的奇怪错误。我无法找出问题所在。任何帮助将不胜感激。 JSON输入 (使用Python进行调试) 源代码 (根据答案 更新 ) 错误 UPD: 谢谢大家。现在很明显,此问题的原因是HTTP

  • 问题内容: 我在字符串列表的json.Marshal上得到这个: 原因很明显,但是如何在Go中删除/替换这样的字符串?我一直在阅读docst 和包,似乎没有明显/快速的方法。 例如,在Python中,您可以使用一些方法删除无效字符,将其替换为指定字符或严格设置,这会导致无效字符的异常。如何在Go中做等效的事情? 更新:我的意思是得到异常的原因(紧急?)-json.Marshal期望有效的UTF-8