OSS回调成功了却显示203错误-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

OSS回调成功了却显示203错误

f7anty 2015-12-06 16:22:39 21444
1.OSS 设置回调地址,回调成功了,但却显示203错误,如下
CallbackFailed Callback to application server failed, please check your callbackUrl. 5663F7B9B295343C79332060 saas01.oss-cn-hangzhou.aliyuncs.com


用的例子是表单上传PHP回调上传那个,info.status返回的是203,但实际已调用了回调函数,应用服务器已获取到文件信息

FileUploaded: function(up, file, info) {
            console.log('uploaded')
            console.log(info.status)
            set_upload_param(up);
            if (info.status == 200)
            {
                document.getElementById(file.id).getElementsByTagName('b')[0].innerHTML = 'success';
            }
            else
            {
                document.getElementById(file.id).getElementsByTagName('b')[0].innerHTML = info.response;
            }
},




2.OSS既然不支持表单大文件的断点上传和断点下载,是不是意味着要进行表单断点上传只能走应用服务器,再由应用服务器把数据发给OSS?除了这个有什比较好的解决方法吗?
3.我通过向应用服务器申请 在header头部进行的签名Authorization,是不是要根据获取到的这个Authorization向OSS发送请求。请求如下,这样写会返回403错误,请问具体要怎么写?
date=new Date().toUTCString();

$.ajax({
                async:true,
                cache:false,
                type: 'post',
                dataType : "jsonp",
                jsonp:"jsoncallback",
                url:"http://example.oss-cn-hangzhou.aliyuncs.com/test“,
                headers: {
                  "Authorization":"OSS dfEREKOkodf345dfd:vfcQEKlhMqWLS7yutRTJJui4sSiU=",
                    "Content-MD5":"",
                    "Content-Type": "text/html",
                    "Date": date,
                    "X-OSS-Meta-Author": " foo@bar.com",
                    "X-OSS-Magic": "abracadabra",
                    "host":"example.oss-cn-hangzhou.aliyuncs.com",

                },success:function(data){

                }
            });
前端开发 应用服务中间件 PHP 对象存储
分享到
取消 提交回答
全部回答(9)
  • memecache
    2018-09-19 16:47:20
    ReOSS回调成功了却显示203错误
    [font=PingFangSC, "]oss回调203怎么解
    [font=PingFangSC, "]

    1. <Error>
    2. <Code>CallbackFailed</Code>
    3. <Message>Error status : 302.</Message>
    4. <RequestId>5B7B74B84D5A2B48061EAD0E</RequestId>
    5. <HostId>****.oss-cn-qingdao.aliyuncs.com</HostId>
    6. </Error>
    0 0
  • 旧城灯火
    2018-04-29 16:59:12
    ReOSS回调成功了却显示203错误



    一、CallbackFailed Callback to application server failed, please check your callbackUrl  
    表明你的回调url在公网下不可访问




    二、Response body is not valid json format
    表面你回应oss的不是json格式的数据。注意文档中说oss会访问回调接口,把结果原样返回到用户前端,所以根据你自己的需要设定响应内容。
    在sdk demo中是如下返回的(AppCallbackServer中):
    protected void doGet(HttpServletRequest request , HttpServletResponse response)
           throws ServletException , IOException {
       System. out.println( "用户输入url:" + request.getRequestURI()) ;
       response(request , response , "input get " , 200) ;
    }
    private void response(HttpServletRequest request , HttpServletResponse response , String results , int status) throws IOException {
       String callbackFunName = request.getParameter( "callback") ;
       response.addHeader( "Content-Length" , String. valueOf(results.length())) ;
       if (callbackFunName == null || callbackFunName.equalsIgnoreCase( ""))
          response.getWriter().println(results) ;
       else
          response.getWriter().println(callbackFunName + "( " + results + " )") ;
       response.setStatus(status) ;
       response.flushBuffer() ;
    }
    它直接返回一个inut get字符串,因此如果不改动的话返回的自然不是json格式。
    只需要如下设置result就可以正常响应;


    JSONObject object = new JSONObject() ;
    object.put( "code" , 200) ;
    object.put( "message" , "success") ;
    String results = JSONObject. fromObject(object).toString() ;
    this.response(request , response , results , 200) ;



    0 0
  • rockuw
    2016-07-15 19:42:46
    回答2,3:

    2. 可以使用OSS Javascript SDK: https://help.aliyun.com/document_detail/32069.html
    3. 参考OSS Javascript SDK的签名实现: https://github.com/ali-sdk/ali-oss/blob/master/lib/client.js#L123
    0 0
  • 马自达
    2016-07-15 19:24:40
    ReOSS回调成功了却显示203错误
    前两天,也碰到这个问题。文件已经在oss的bucket,为什么不是回调请求的状态码不是200,问题是回调没成功。我的情况是,我的回调接口是本地的,oss的服务器在外网没法访问,所以虽然文件传上去了,但是回调没成功。解决办法:我用了ngrok,让oss可以访问我的接口,状态码就变成200.
    0 0
  • zlhl
    2016-04-29 17:45:30
    ReOSS回调成功了却显示203错误
    我的同样的问题 但是报错 body json格式不对
    错误信息:
    <?xml version="1.0" encoding="UTF-8"?>
    <Error>
      <Code>CallbackFailed</Code>
      <Message>Response body is not valid json format.</Message>
      <RequestId>57232B8C15D46CC9760B6ECC</RequestId>
      <HostId>js-store.oss-cn-beijing.aliyuncs.com</HostId>
    </Error>

    我的BODY 设置:
    Callback.setCallbackBody("bucket_name=${bucket}&filename=${object}&etag=${etag}&size=${size}");
    0 0
滑动查看更多
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

推荐文章
相似问题