【发布时间】:2017-08-16 17:00:03
【问题描述】:
问题
我有 Access Denied 向云端发出 GET 请求,其中包含使用预设和自定义策略的签名 cookie。
详情
-
cdn.example.com是abc.cloudfront.net的备用域,CNAME 设置在 cloudfront 和 cloudflare 上。 - 我希望在
abc.example.com/authorize之后,cdn.example.com可以访问。 - 我在
abc.example.com/authroize后面用的是PHP和Laravel,代码如下。
```
$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;
```
- cookies 设置为
.example.com
- 当我转到
cdn.example.com时,显示以下消息
提前致谢。
【问题讨论】:
-
你发现了吗?有同样的问题
-
如果我没记错的话,问题是由于加密的 cookie。您可能需要检查:laravel.com/api/5.2/Illuminate/Cookie/… 如果您使用的是 Laravel 5.2,请确保在使用中间件加密时添加了异常。
标签: php amazon-web-services cookies amazon-cloudfront