AWS Cloudfront Signed Cookie无法在备用域上运行

时间:2016-05-06 03:38:49

标签: php amazon-web-services cookies amazon-cloudfront

问题

对于使用预设和自定义政策签名的Cookie,我有Access Denied GITS请求到Cloudfront。

详细

  1. cdn.example.comabc.cloudfront.net的备用域,CNAME在cloudfront和cloudflare上设置。
  2. 我希望在abc.example.com/authorize后,cdn.example.com可以访问。
  3. 我在abc.example.com/authroize后面使用PHP和Laravel,代码如下。
  4. ```

    $cloudFront = new Aws\CloudFront\CloudFrontClient([
        'region'  => 'us-west-2',
        'version' => '2014-11-06'
    ]);
    
    $resourceKey = 'http://cdn.example.com';
    $expires = time() + 300;
    
    $signedCookieCannedPolicy = $cloudFront->getSignedCookie([
            'url'         => $resourceKey,
            'expires'     => $expires,
            'private_key' => 'pk.pem',
            'key_pair_id' => 'XXXXXXXXXXXXXX',
    ]);
    
    $response = Response::success();
    foreach ($signedCookieCannedPolicy as $name => $value) {
        $response->withCookie(Cookie::make($name, $value, 360, null, 'example.com'));
    }
    
    return $response;
    

    ```

    1. Cookie设置为.example.com
    2. enter image description here

      1. 当我转到cdn.example.com时,会显示以下消息
      2. enter image description here

        提前致谢。

1 个答案:

答案 0 :(得分:0)

原来这个问题是由加密的cookie引起的。您可能想要检查:https://laravel.com/api/5.2/Illuminate/Cookie/CookieJar.html#method_make如果您使用的是Laravel 5.2,请确保在使用中间件加密时添加了例外。