将文件从资源服务器下载到浏览器(OAuth2)

时间:2014-08-15 15:44:46

标签: php oauth-2.0 download downloading

我在我被分配到的项目中实施OAuth2(100%规范兼容)。

假设我在资源服务器上有一个名为“file.txt”的文件。

客户想要下载该文件。假设文件下载是通过另一台服务器dl.example.com完成的,因为可能有多个资源服务器,并且下载的公共访问点将是一种更简洁的方法。 (?)

因此,如果客户想要下载文件并将其输出到浏览器,那么首选过程应该是什么?

如果我采取以下方法:

1)客户向dl.example.com?access_token=123123&fpath=file.txt

发出请求

2)dl.example.com向相应的资源服务器发出请求

3)资源服务器将文件发送到dl.example.com

4)dl.example.com将文件发送到客户端

5)客户端将文件输出到浏览器进行下载

会有额外的网络I / O开销。

这种做法不是正确的方法吗?如何像Dropbox这样的“大玩家”呢?我查看了Dropbox的网址:dl-web.dropbox.com/*whatever*。 Dropbox的方法与上面的完全不同吗?

1 个答案:

答案 0 :(得分:2)

我不会代理通过dl.example.com服务器传递文件资源。

access_token是这里的关键。如果资源服务器本身支持OAuth2并且可以访问access_tokens的商店,则可以使用状态303从原始请求重定向到需要的实际资源地址:

Original Request:   https://dl.example.com?access_token=123123&fpath=file.txt
Response:   303 https://resource.server.com/path/file.txt?access_token=123123

您可以标记Curl以遵循重定向。如果您正在开发一个客户端SDK来包装访问权限,那么这可能都是不可见的。