файлы cookie — AWS 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=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 в сценарии после session_start. Я попытался добавить это, но это требуется перед 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();

3

Решение

Файлы cookie не отображаются в браузере, так как вы отправляете файлы cookie для домена A из домена B. Это игнорируется браузерами в целях безопасности. Это функция браузера, а не PHP.

Если вы хотите использовать подписанные куки с CloudFront, вам нужно использовать CNAME для дистрибутива CloudFront, который является поддоменом вашего домена сервера PHP. Более подробный ответ можно найти в разделе: https://mnm.at/markus/2015/04/05/serving-private-content-through-cloudfront-using-signed-cookies/

Короче говоря: предположим, что вы хотите использовать домен example.com. Вы обслуживаете файлы PHP под www.example.com. Тогда вы можете использовать CNAME media.example.com для d111111abcdef8.cloudfront.net. Чтобы отправить куки со стороны PHP на CloudFront Server, вам нужно использовать домен example.com в печенье.

Ссылочный сайт также замечает, что вы должны использовать функцию PHP Заголовок () чтобы отправить печенье, а не SetCookie (). Это связано с тем, что функция setcookie выполняет некоторую кодировку, которая разрушает певческий параметр, созданный с помощью функций, упомянутых на сайте.

7

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]