PHP Cloudfront SetCookie
我正在尝试设置cookie以查看来自AWS Cloudfront的私有内容
http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private-content-setting-signed-cookie-custom-policy.html 他们给出了一个示例cookie标题: Set-Cookie: Domain=d222221abcdef8.cloudfront.net; Path=/; Secure; HttpOnly; CloudFront-Key-Pair-Id=APKA9ONS7QCOWEXAMPLE 我创建了以下PHP代码 setcookie ( 'CloudFront-Key-Pair Id','MYID','/','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.出于安全原因,浏览器会默默忽略这些cookie.这是一个浏览器功能而不是PHP的东西.
如果您要在CloudFront中使用已签名的Cookie,则需要为CloudFront分配使用CNAME,该分发是您的PHP服务器域的子域.更详细的答案可以在以下网址找到: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用于d222221abcdef8.cloudfront.net.要将Cookie从PHP端发送到CloudFront服务器,您需要在Cookie中使用域example.com. 引用的站点也注意到你应该使用PHP函数header()来发送cookie,而不是setcookie().这是因为setcookie函数执行了一些编码,这些编码会破坏使用网站上提到的功能创建的歌唱参数. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |