Intereting Posts
Перенаправление на предыдущую страницу после входа в систему с помощью PHP Санитация регулярных выражений, добавленных пользователем в PHP чтение RSS-ленты twitter rss с простым xml Как выполнять скрипты PHP в фоновом режиме с помощью EXEC () и CMD Установите / снимите флажок (Выбрать все), если все дочерние флажки выделены в этом div Передача массивов через Ajax / JSON без JQuery Извлечь токен из URL-адреса ответа – Spotify API Объединение нескольких массивов, сортировка по количеству массивов Моделирование нескольких базовых баз данных Исключения в PHP – Try / Catch или set_exception_handler? Возобновить PHP до исполняемого скрипта после исключения Надежное очищение тела сообщения электронной почты Как добавить метод к существующему классу в PHP? как отправлять электронную почту автоматически в определенный день или время в php? Добавьте символ FNC1 в код, созданный с помощью tcpdf datamatrix

AWS Cloudfront SetCookie в PHP

Я пытаюсь установить 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(); 

Solutions Collecting From Web of "AWS Cloudfront SetCookie в PHP"

Куки-файлы не отображаются в браузере, потому что вы отправляете 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 выполняет некоторую кодировку, которая разрушает параметр пения, созданный с помощью функций, упомянутых на сайте.