繁体   English   中英

AWS Cloudfront 返回 Missing Key-Pair-Id 查询参数或 cookie 值

[英]AWS Cloudfront returning Missing Key-Pair-Id query parameter or cookie value

我有返回 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 密钥对和正确的资源 URL。 我的对象是私有的,cloudfront 可以访问它。 还有什么我需要做的事情才能让它工作吗?

当我们使用 PUBLIC_KEY 和 PRIVATE_KEY 时,我们会丢失 Key-Pair-Id。 我们应该使用 Access Key Id 而不是 PUBLIC_KEY 这样它就会完美地工作。

在此处输入图片说明

添加标题密钥对

这些不是原始标题,它们是 cookie。 虽然我不使用邮递员,但听起来这是您的问题:

根据您所说的,您不会像这样添加它们:

[CloudFront-Key-Pair-Id, APKEXAMPLEQQ]

相反,它应该看起来更像这样:

[Cookie, CloudFront-Key-Pair-Id=APKEXAMPLEQQ]

这是 C# 中签名 URL 的示例。

http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/CreateSignatureInCSharp.html

当您返回签名密钥时,您可以使用查询字符串参数或 Cookie 返回。

您可以通过两种方式将 cookie 返回到 API Gateway,Do with ANY Integration 并按原样返回标头。

如果您使用其他任何方法,则需要返回 json 数据并将 json 数据映射到 API Gateway 中的 headers。

http://docs.aws.amazon.com/apigateway/latest/developerguide/request-response-data-mappings.html#mapping-response-parameters

希望它有帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM