我有返回Cloud Front Signed Cookie值的代码。
CookiesForCustomPolicy signedCookiesUrl = AmazonCloudFrontCookieSigner.GetCookiesForCustomPolicy("https://example.cloudfront.net/movies/nature.mp4", new StreamReader(File.OpenRead(Path.Combine(AppContext.BaseDirectory, "pk-2.pem"))),"APKEXAMPLEKEYID", DateTime.Now.AddDays(10), DateTime.Now, null);
我使用返回的值来请求对象,但是返回
<Error>
<Code>MissingKey</Code>
<Message>
Missing Key-Pair-Id query parameter or cookie value
</Message>
</Error>.
我通过PostMan工具对此进行测试,将标题和直接请求放入Chrome浏览器并仍然出现相同的错误。
我使用了正确的Cloudfront密钥对并更正了资源网址。我的对象是私有的,cloudfront可以访问它。还有什么我需要努力让这个工作吗?
答案 0 :(得分:1)
答案 1 :(得分:0)
添加标头密钥对
这些不是原始标题,而是Cookie。虽然我不使用邮差,但听起来这是你的问题:
根据你所说的,你不会像这样添加它们:
[CloudFront-Key-Pair-Id, APKEXAMPLEQQ]
相反它看起来应该更像这样:
[Cookie, CloudFront-Key-Pair-Id=APKEXAMPLEQQ]
答案 2 :(得分:0)
以下是C#中签名网址的示例。
http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/CreateSignatureInCSharp.html
当您返回签名密钥时,您可以使用查询字符串参数或Cookie返回。
您可以通过两种方式将Cookie返回到API网关:执行任何集成并按原样返回标头。
如果您执行任何其他方法,则需要返回json数据并将json数据映射到API网关中的标头。
希望它有所帮助。