0007-00000004

问题描述

请求回调参数Callback中的callbackUrl部分不合法。

问题原因

您发送的请求中用于上传回调的Callback参数Base64解码后会得到一个JSON结构,如果其中callbackUrl部分不是合法的URL,就会导致接口报错。

callbackUrl参数表示的是文件上传成功后,OSS发送回调请求的目的URL地址。接口对该参数的要求是:

  • 支持同时配置最多5个URL,多个URL间以分号(;)分隔。OSS会依次发送请求直到第一个返回成功为止。

  • 如果未配置或者配置值为空则表示未配置Callback。

  • 支持HTTPS地址。

  • 为了保证正确处理中文等情况,callbackUrl需做URL编码处理,例如http://example.com/中文.php?key=value&中文名称=中文值需要编码成http://example.com/%E4%B8%AD%E6%96%87.php?key=value&%E4%B8%AD%E6%96%87%E5%90%8D%E7%A7%B0=%E4%B8%AD%E6%96%87%E5%80%BC

如果该参数中的URL不合法,就会导致接口返回该错误。

问题示例

比如您的请求中Callback参数解码后得到:

{
"callbackUrl":"www.callback-example.com:test",
"callbackBody":"bucket=${bucket}&object=${object}&etag=${etag}&size=${size}&mimeType=${mimeType}&imageInfo.height=${imageInfo.height}&imageInfo.width=${imageInfo.width}&imageInfo.format=${imageInfo.format}&my_var=${x:my_var}"
}

其中callbackUrl参数的值为www.callback-example.com:test,这不是一个合法的URL地址,因为test所处的位置应为端口号,必须是一个正整数,因此接口会返回该错误。

解决方案

请确保Callback参数的原始JSON字符串中callbackUrl参数值是正确的URL字符串,如果存在中文,需要进行URL编码处理。

相关文档