如何使用来自云前端分发的签名 cookie 访问受限媒体文件,该分发使用与应用程序域不同的域?

问题描述

我们可以将应用程序域中的 cookie 分配给不同的域吗?例如,我们需要访问使用 d1fzlamzw9yswb.cloudfront.net 分发版的受限媒体文件,但是如果我们在 localhost 或任何其他域中运行应用程序,则不允许我们以编程方式将 cookie 分配给 d1fzlamzw9yswb.cloudfront.net。它通常将 cookie 设置为应用程序域。

不知何故,通过将浏览器中的 cookie 手动分配给 d1fzlamzw9yswb.cloudfront.net,我们能够毫无问题地访问内容

因此,如果应用程序在另一个域(本地主机或任​​何其他域)中运行,我们如何将 cookie 分配给我们需要访问受限媒体文件的不同域?这样做的最佳方法是什么?

解决方法

显然不允许为不同的域设置 cookie。

但是,可以在签名 cookie 中使用顶级域,例如 .example.com。如果正确设置,此 cookie 将始终发送到向 example.com 发出的任何请求,但也会发送到其任何子域,例如 cloudfront.example.com。因此,我们可以利用这一点,让我们在 backend.example.com 上运行的后端服务为 .example.com 创建和设置签名 cookie。稍后,当前端请求文件表单 cloudfront.example.com 时,它会自动在请求中包含签名的 cookie。

此方法需要为 Cloud Front 分发提供自定义域。这里docs how to do that

最好的,斯蒂芬