如何阻止从Azure下载CDN位置重定向以更改浏览器位置?

时间:2017-07-07 21:48:40

标签: php azure file-storage

我正在使用PHP Azure库创建SAS令牌,用于在单击链接后向站点的经过身份验证的用户提供文件(文件存储,而不是blob,而不是公共)。该链接指向PHP页面,我在其中创建SAS,然后发出Location:标头以调用下载。在最终完成下载之前,没有任何已知问题。

在附图中,重复步骤1-4 ..每个文件选择一个。

问题在于,由于URL位于站点外部(CDN),因此使用位置:$ url + sas。这会改变浏览器的位置,但不会反映在浏览器中......标题会将文件作为附件推送。

如上所述,用户可以继续点击原始页面上的其他下载链接并且它们工作正常(这是可取的)但是他们第一次选择同一页面上的任何链接转到原始页面/站点上的其他位置(在示例中显示为单击“home”,显示浏览器的真实位置(accountname.file.core.windows.net/etc),并且用户从Azure文件存储服务器获取资源未找到错误。(显示在图表)

7.10.2017添加了此图片以说明所使用的过程:

Link to SAS process chart

如果在没有浏览器位置以这种方式“重置”的情况下从CDN推送URL下载,我有点不知所措。我已经多次从本地服务器/文件完成此操作但位置:$ url / SAS方面是一个不同的动态。在我看来,这应该与将浏览器指向具有推送下载的EXE的公共可访问URL并且仍然允许用户在原始站点上说出的行为没有区别。我开始认为这应该是重定向而不是位置,但我没有找到很多Azure / SAS /文件存储示例来支持这一点。我必须在这里找到一些简单的东西,但它正在逃避我。

1 个答案:

答案 0 :(得分:0)

我不确定我是否正确使用它,您似乎想从Azure存储中下载文件而不使用PHP脚本在浏览器中更改地址

基本上,您可以使用以下file_get_contents()功能来实现此目的。

header('Content-Type: application/octet-stream'); 
header("Content-Disposition: attachment; filename=$filename");
$response = file_get_contents($SASUri);

echo $response;