gpt4 book ai didi

php - PHP 中的 AWS Cloudfront SetCookie

转载 作者:可可西里 更新时间:2023-11-01 00:20:04 33 4
gpt4 key购买 nike

我正在尝试设置 cookie 以查看来自 AWS Cloudfront 的私有(private)内容

http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private-content-setting-signed-cookie-custom-policy.html

他们给出了一个示例 cookie header :

Set-Cookie: Domain=d111111abcdef8.cloudfront.net; Path=/; Secure; HttpOnly; CloudFront-Key-Pair-Id=APKA9ONS7QCOWEXAMPLE

我创建了以下 php 代码

setcookie (
'CloudFront-Key-Pair Id',
'MYID',
0,
'/',
'mycloudfrontsub.cloudfront.net',
true,
true
);

但是没有设置cookie。只有在我取出域名时才会设置 cookie。

我认为这是由于在 session_start 之后在脚本中调用了 setcookie。我尝试添加这个,但它在 session_start() 之前是必需的

session_set_cookie_params(0, '/', 'duvoxso6rm38g.cloudfront.net);

我需要做这样的事情吗?

//close local session, then open new one for aws
$id=SID;
session_write_close();
session_set_cookie_params(0, '/', 'mysub.cloudfront.net');
session_start();
setcookie(...);
session_write_close();
session_set_cookie_params(0, '/', 'originaldomain.com');
session_start();

最佳答案

cookie 不会显示在浏览器中,因为您从域 B 发送域 A 的 cookie。出于安全原因,浏览器会默默地忽略它。这是一个浏览器功能,不是 PHP 的东西。

如果您想将已签名的 cookie 与 CloudFront 一起使用,您需要为作为您的 PHP 服务器域的子域的 CloudFront 分配使用 CNAME。可以在以下位置找到更详细的答案:https://mnm.at/markus/2015/04/05/serving-private-content-through-cloudfront-using-signed-cookies/

简而言之:假设您要使用域 example.com。您在 www.example.com 下提供 PHP 文件。然后您可以将 CNAME media.example.com 用于 d111111abcdef8.cloudfront.net。要将 cookie 从 PHP 端发送到 CloudFront 服务器,您需要在 Cookie 中使用域 example.com

引用的站点还注意到您应该使用 PHP 函数 header() 来发送 cookie,而不是 setcookie()。这是因为 setcookie 函数做了一些编码,破坏了用网站上提到的函数创建的歌唱参数。

关于php - PHP 中的 AWS Cloudfront SetCookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29564984/

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