gpt4 book ai didi

ruby-on-rails - 已设置 Cookie,但未发送到 Cloudfront

转载 作者:行者123 更新时间:2023-12-04 05:41:00 25 4
gpt4 key购买 nike

我正在尝试使用 signed cookies访问 AWS Cloudfront 上的私有(private)内容。

  • 在 Puma 服务器上运行的 Rails 4.2.1 应用程序 - http://localhost:3000
  • 使用最新的 Chrome(并且可以在 Firefox 和 Safari 中重现相同的内容)

  • 我的应用程序成功设置了 cloudfront 所需的正确 cookie,并且每个 cookie 都有正确的值。作为引用,需要设置的三个cookie是:
  • CloudFront-策略
  • CloudFront-签名
  • CloudFront-Key-Pair-Id

  • 我知道这些值是正确的,就像我抓取这些 cookie 并使用它们执行 curl 请求一样,它是成功的(为简洁起见,将值替换为 ...):
    curl -v -b "CloudFront-Signature=...; CloudFront-Policy==...; CloudFront-Key-Pair-Id==...;" http://mydistribution.cloudfront.net/myfile.jpg

    错误

    当我使用浏览器时,虽然我可以看到在我对服务器的原始请求中设置了 cookie http://localhost:3000/ ,我对 Cloudfront url 的请求(例如,在我的图像标签中)不会传递任何这些 cookie。这导致
    <Error><Code>MissingKey</Code><Message>Missing Key-Pair-Id query parameter or cookie value</Message></Error>

    任何想法为什么我的 cookie 没有被发送到云端?建议和支持表示赞赏:)

    最佳答案

    是的,这就是我们设置的方式,使用 CNAME 别名并在基域上设置 cookie,然后您将能够传递您的 cookie。

    如果人们想知道下一步是什么,让我们详细说明一下,让我们使用上面的示例:-

  • 您正在开发 my.fancy.site.mydomain.com
  • 您的 Cloudfront CNAME 别名是 content.mydomain.com
  • 确保将您的云端签名 cookie 设置为 .mydomain.com 来自您喜欢的应用程序
  • 从此时起,您可以为 CF 传递 cookie。
  • 一种快速测试您的 cookie 设置是否正确的方法,尝试获取您的 Assets URL,然后将 URL 直接放在浏览器中。如果 cookie 设置正确,您将能够直接访问该文件。

  • 如果您使用 javascript 获取 cdn Assets ,请确保在您的 JS 代码中,您需要传递 withCredentials 选项,否则它将不起作用。例如,如果您使用 jQuery,您将需要以下内容:-
    $.ajax({
    url: a_cross_domain_url,
    xhrFields: {
    withCredentials: true
    }
    });

    如果请求成功,您应该从 CloudFront 获得带有“Access-Control-blah-blah”的响应 header 。

    希望对搜索此答案的人们有所帮助。

    关于ruby-on-rails - 已设置 Cookie,但未发送到 Cloudfront,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29865476/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com