七牛C/C++ SDK 可以多服务端吗?

http://developer.qiniu.com/docs/v6/sdk/c-sdk.html#io-get-private

c/c++ sdk中提到 :

下载私有文件

如果某个 bucket 是私有的,那么这个 bucket 中的所有文件只能通过一个的临时有效的 downloadUrl 访问:

http://X4X/?e=&token=
其中是由业务服务器签发的一个临时下载凭证,是其有效期。下载凭证不需要单独生成,C-SDK 提供了生成完整 downloadUrl 的方法(包含了 dntoken),示例代码如下:

char* downloadUrl(Qiniu_Client* client, const char* domain, const char* key)
{
char* url;
char* baseUrl;
Qiniu_RS_GetPolicy getPolicy;

Qiniu_Zero(getPolicy);
baseUrl = Qiniu_RS_MakeBaseUrl(domain, key); // baseUrl也可以自己拼接:"http://"+domain+"/"+urlescape(key)
url = Qiniu_RS_GetPolicy_MakeRequest(&getPolicy, baseUrl, NULL);

Qiniu_Free(baseUrl);
return url;                                  // When url is no longer being used, free it by Qiniu_Free.

}

生成 downloadUrl 后,服务端下发 downloadUrl 给客户端。客户端收到 downloadUrl 后,和公有资源类似,直接用任意的 HTTP 客户端就可以下载该资源了。唯一需要注意的是,在 downloadUrl 失效却还没有完成下载时,需要重新向服务器申请授权。

问题:为了避免盗链,采用私有下载,又不想再架设服务器。
我能否把服务端和客户端都做在同一机器的不同程序中,让每个客户端跟同一机器的服务端通信以获得下载凭证?
客户端肯定是通过家庭/办公室的路由器访问互联网。

阅读 3k
2 个回答

可以。
七牛的 download url 没有任何限制。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题