Я пытаюсь установить 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 не установлен. Файл 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();
Куки-файлы не отображаются в браузере, потому что вы отправляете cookie для домена A из домена B. Это приводит к молчанию браузерами по соображениям безопасности. Это функция браузера, а не вещь PHP.
Если вы хотите использовать подписанные файлы cookie с CloudFront, вам нужно использовать CNAME для дистрибутива CloudFront, который является субдоменом вашего домена PHP-сервера. Более подробный ответ можно найти в разделе: https://mnm.at/markus/2015/04/05/serving-private-content-through-cloudfront-using-signed-cookies/
Короче говоря, предположим, что вы хотите использовать домен example.com . Вы обслуживаете файлы PHP по адресу http://www.example.com . Затем вы можете использовать CNAME media.example.com для d111111abcdef8.cloudfront.net. Чтобы отправить файлы cookie со стороны PHP на CloudFront Server, вам необходимо использовать example.com в домене cookie.
На указанном сайте также отмечается, что вы должны использовать заголовок функции PHP () для отправки cookie, а не setcookie () . Это связано с тем, что функция setcookie выполняет некоторую кодировку, которая разрушает параметр пения, созданный с помощью функций, упомянутых на сайте.