问题描述
请求回调参数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编码处理。
相关文档
关于上传回调中的常见错误及错误排查,请参见上传回调错误及排除。
关于基于Post Policy的使用规则在服务端通过各语言SDK代码完成签名,并且设置上传回调,然后通过表单直传数据到OSS的具体操作,请参见服务端签名直传并设置上传回调概述。
关于搭建基于OSS的移动应用数据直传服务并设置上传回调的具体操作,请参见快速搭建移动应用上传回调服务。