OSS上传回调时出现“The callback configuration is not json format”报错

问题描述

在使用阿里云OSS上传回调功能时,发送给对象存储OSS的请求中携带相应的回调参数后,返回了以下报错信息。

<Error>
  <Code>InvalidArgument</Code>
<Message>The callback configuration is not json format.</Message>

问题原因

Callback参数必须为经过Base64编码的JSON字符串。发生报错的原因是在您将callbackBodyType设置为application/json后,callbackBody参数没有使用有效的JSON格式。

解决方案

发起回调请求的Content-Type,支持application/x-www-form-urlencodedapplication/json,默认为前者。callbackBodyType的取值为application/x-www-form-urlencoded,则callbackBody中的变量将会被经过URL编码的值替换掉;如果为application/json,则会按照JSON格式替换其中的变量。关于OSS回调参数设置的更多信息,请参见Callback。请参见以下方法进行调整:

  • 方法一:由于在JSON中\"是转义字符,因此callbackBody参数应该设置成类似以下格式。
    "callbackBody":"{\"bucket\":${bucket},\"object\":${object}}"
  • 方法二:
  1. callbackBodyType设置为application/x-www-form-urlencoded
  2. 将callbackBody参数设置成类似以下格式。
    "callbackBody":"bucket=${bucket}&object=${object}"

相关文档

OSS使用上传回调的示例和常见问题,请参见上传回调中的常见错误及分析处理

适用于

  • 对象存储OSS