簡體   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