搜尋

首頁  >  問答  >  主體

node.js - 七牛 callbackUrl callbackBody 不生效

var qiniu = require('qiniu');

qiniu.conf.ACCESS_KEY = 'xxx';
qiniu.conf.ACCESS_KEY = 'xxx';

var bucket = 'test';
var putPolicy  = new qiniu.rs.PutPolicy(bucket);

putPolicy.callbackUrl = 'wokanhao.com:4000';
putPolicy.callbackBody = "name=$(key)";

var token = putPolicy.token();

图片可以上传成功,但是不会回调业务服务器(xxx.com)。
请问我的上传策略中哪里写错了吗?

-----------------------------------继续提问-----------------------------------

修改成如上格式后,qiniu 还是返回 579 错误
请问又是哪里写错了?

-----------------------------------继续提问-----------------------------------

以下两点需要在回调服务器中设置?

3、response header中Content-Type不是'application/json'
4、response body 不是一个合法的json字符串

-----------------------------------继续提问-----------------------------------

putPolicy.callbackUrl = 'http://wokanhao.com:4000/qiniu-callback';
感谢您的提醒,我这里就是先做个测试

您可以访问 http://wokanhao.com:4000/ 随便提交下,
说明这个链接是可以接受POST请求的,并且返回的是JSON格式的数据.

加上上面 putPolicy 的配置

var bucket = 'test';
var putPolicy  = new qiniu.rs.PutPolicy(bucket);
putPolicy.callbackUrl = 'wokanhao.com:4000';
putPolicy.callbackBody = "name=$(key)";

目前还是会出现 图片上传可以成功, 但是出现 579 错误, 并且没有完成回调。

业务服务器返回的JSON需要特定的字段? 还是其他原因?

PHPzPHPz2785 天前635

全部回覆(2)我來回復

  • PHP中文网

    PHP中文网2017-04-17 11:08:41

    callbackBody與returnBody格式不同,是一個
    "name=$(fname)&hash=$(etag)&location=$(x:location)&price=$(x:price)&uid=123"
    形式的字符串,參考:
    http://developer.qiniu.com/docs/v6/api/overview/up/response/callback.html

    另外,看你的代碼,putPolicy賦值了一串字符串,下麵又新建一個rs.PutPolicy實例,這是什麼用法。。。

    如果這是nodejs的sdk的話,正常的做法是:

    var putPolicy = new qiniu.rs.PutPolicy(bucket);
    putPolicy.callbackUrl = 'some callbackUrl';
    putPolicy.callbackBody = 'some callbackBody';
    ...
    
    var uptoken = putPolicy.token();
    

    參考:http://developer.qiniu.com/docs/v6/sdk/nodejs-sdk.html#upload-token

    579錯誤的原因:無法正常請求回調接口,通常的原因:
    1、接口公網不可訪問
    2、接口不接受 Post method
    3、response header中Content-Type不是'application/json'
    4、response body 不是一個合法的json字符串
    5、好吧,再加一个,callbackUrl 不写'http://'

    關於怎麼設置response header,參考:
    https://www.google.com.hk/search?q=express response header&oq=express resp&aqs=chrome.3.69i57j0l3.5779j0j1&client=ubuntu-browser&sourceid=chrome&ie=UTF-8

    你也提到您可以访问 http://wokanhao.com:4000/ 随便提交下,,但是為什麼callbackUrl就是不寫http://

    回覆
    0
  • 天蓬老师

    天蓬老师2017-04-17 11:08:41

    putPolicy.callbackUrl = 'wokanhao.com:4000';

    這裏需要是一個 url,而不是 host,應該改為:

    putPolicy.callbackUrl = 'http://wokanhao.com:4000/qiniu-callback';

    • 注意:這個地址隻是示意性的,你應該按自己實際情況設定

    回覆
    0
  • 取消回覆