当前位置: 首页 > 知识库问答 >
问题:

PHP中的AWS Cloudfront SetCookie

柴宏阔
2023-03-14

我正在尝试设置cookie以从AWS Cloudfront查看私有内容

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

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

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。

我认为这是由于在会话启动后在脚本中调用setcookie造成的。我尝试添加此项,但在会话_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();

共有1个答案

姜永贞
2023-03-14

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

如果要将签名cookie与CloudFront一起使用,则需要为CloudFront发行版使用CNAME,该发行版是PHP服务器域的子域。有关更详细的答案,请参见:https://mnm.at/markus/2015/04/05/serving-private-content-through-cloudfront-using-signed-cookies/

简而言之:假设您想使用域example.com.您在www.example.com.下提供PHP文件,然后您可以使用CNAMEmedia.example.comd111111abcdef8.cloudfront.net.从PHP发送cookie您需要使用Cookie中的域example.com。

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

 类似资料:
  • 问题内容: 我刚刚开始阅读有关DOM的文档和示例,以便对文档进行爬网和解析。 例如,我有一部分文档如下所示: 我正在尝试使用以下代码来获取所有标签,并分析其中是否包含废话或信息: 但是我只是剥离了不带标签的字符串,例如: 但我想得到: 如何保留html节点(标签)? 问题答案: 如果您想使用DOM,则必须了解这个概念。DOM文档中的所有内容(包括DOMDocument)都是一个节点。 DOMDoc

  • 问题内容: 我正在构建一个Web应用程序,除其他事项外,该应用程序还需要连接到FTP服务器以下载或上传文件。该应用程序是用PHP编写的,并托管在Linux服务器上。 我想知道的是是否有可能也提供对SFTP服务器的支持,但是在Google上进行了一些快速搜索之后,看来这并不是那么简单。 因此,问题是:在PHP中使用SFTP的最佳方法是什么?是否有可以同时支持FTP和SFTP的类,以便可以对两者使用相

  • 问题内容: 我有一个简单的表单,可以生成一个新的相册,将标题和说明发送到MySQL,然后将用户重定向到可以上传照片的页面。 一切正常,直到“&”号进入方程式。信息从jQuery模态对话框发送到PHP页面,然后将条目提交到数据库。Ajax成功完成后,会将用户发送到带有GET URL的上传页面,以告知该页面它要上传到的专辑- 如果标题带有“&”号,则上传页面上的“标题”字段将无法正确显示。有没有办法逃

  • 本文向大家介绍PHP中的回文,包括了PHP中的回文的使用技巧和注意事项,需要的朋友参考一下 理查德·怀斯曼(Richard Wiseman)是一位心理学家,魔术师和作家,在http://richardwiseman.wordpress.com/上经营着一个小博客。他的博客谈论各种各样的事情,但是每个星期五他都会发布一个小难题,您可以尝试解决。 发布的最后一个难题谈到回文数和速度,这是完整的难题。

  • 问题内容: 我正在使用zend创建一个Web应用程序,在这里我创建了一个接口,用户A可以从该接口向多个用户发送电子邮件,并且效果很好,但是由于用户A等待太多,这会降低执行时间“已确认的回复”(将在电子邮件发送后显示。) 在Java中,我们可以通过“线程”执行该任务(发送电子邮件),并且不会减慢其余应用程序的速度。 与Java一样,PHP / Zend中是否有任何技术可以用来划分我们的任务,这可能会

  • 其实,我并不是因为迭代或者生成器或者研究 PHP 手册才认识的 yield,要不是协程,我到现在也不知道 PHP 中还有 yield 这么个鬼东西。人家这个东西是从 PHP 5.5 就开始引入了,官方名称叫做生成器。你要说为什么 5.5 年代的东西,现在才拿出来。我还想问你哟,PHP 5.3 就有了的 namespace 为毛到最近这几年才开始正式投产。 那么,问题来了,这东西到底是有何用? 先来

  • 本文向大家介绍PHP中“=>,包括了PHP中“=>的使用技巧和注意事项,需要的朋友参考一下 PHP的"=>"符号 在PHP中"=>"符号是用于在数组中分配键值对,主要在关联数组中使用。【视频教程推荐:PHP教程】 基本句式: key => value 说明:"=>"符号的左侧值称为键,右侧值称为键值。 “=>"符号的使用示例 下面通过简单代码示例来介绍"=>"符号的使用方法。 示例1:使用“=>”

  • 问题内容: 我有以下代码: 所有人都可以正常发送电子邮件并将信息插入数据库,但是mysqli_affected_rows无法正常工作-如何在运行查询后编辑此代码以回显1? 问题答案: 改变这个 至 只需要对象,但您传递了查询对象,这也是问题所在