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

标签 php oauth-2.0 download

我正在一个分配给我的项目中实现 OAuth2(100% 符合规范)。

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

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

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

如果我采取以下方法:

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 的方法与上述方法完全不同吗?

最佳答案

我不会通过 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 来包装访问,那么这一切都可能是不可见的。

关于php - 从资源服务器下载文件到浏览器(OAuth2),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25329592/

相关文章:

javascript - 如何在不重定向的情况下获取 PHP 脚本?

php - 如何使用移动应用程序和后端服务器通信的用户凭据签署 HTTP 请求?

oauth-2.0 - IDX10503 : Signature validation failed

iOS 单独或在一个存档中下载每个文件

ios - 如何更快地下载新闻?

php - 使用 XDebug 时 Xampp 错误 324 空响应

php - Foreach 嵌套在带有 PDO 查询的 while 循环中

javascript - 将文本区域中的内容上传到文件夹

.net - Google 联系人 API v3 身份验证

c# - 从 YouTube 获取 FLV URL