как я могу отправить куки на другую ссылку? - PullRequest
1 голос
/ 22 августа 2011

Есть ли способ POST всех куки (имя куки, значение и время истечения), доступных для определенного домена (например, .example.com), используя javascript? , У меня есть домен, с которого мне нужны файлы cookie для POST, но я хочу опубликовать их на другом домене (например, example2.com). После того, как файлы cookie отправлены POST, мне также нужно перенаправить клиента на определенную ссылку, поэтому я думаю, что может потребоваться некоторый ajax

Примечание. Мне не нужно читать / записывать файлы cookie в другом домене. Мне просто нужно отправить / перенести имена файлов cookie / имена / значения / exp текущего домена в другой домен как значения HTTP POST

Ответы [ 3 ]

2 голосов
/ 22 августа 2011

Вы можете получить доступ к куки, используя document.cookie. Тем не менее, это только дает вам имя и значение - я не знаю (о чем я знаю), чтобы получить дату истечения срока действия куки. Он содержит строку со всеми файлами cookie в формате name1=value1; name2=value2; name3=value3;.

Отправка его в виде запроса POST в другой домен может быть сделана с помощью междоменного XHR , но если вам не нужно читать ответ HTTP на запрос, отправки формы должно быть достаточно. Просто создайте невидимый <form> с его атрибутом метода, установленным на «post», атрибутом действия, установленным на URL-адрес в другом домене, и атрибутом target, установленным на идентификатор невидимого iframe, добавьте файлы cookie как <input>, и отправьте форму.

<iframe id="foo" style="display: none"></iframe>
<form id="bar" method="post" target="foo"
      action="http://www.someotherdomain.com/handle_cookies.php">
    <input id="cookies" type="hidden" name="cookies" />
</form>
<script type="text/javascript">
    document.getElementById('cookies').value = document.cookie;
    document.getElementById('bar').submit();
</script>

Вероятно, лучше создавать <iframe> и <form> динамически, используя JavaScript, вместо того, чтобы писать в HTML, но мне лень писать это в 2:30, извините: P

note : если к первому домену осуществляется доступ по SSL, убедитесь, что соединение с другим доменом также через SSL, в противном случае вы будете передавать защищенные куки-файлы по HTTP как простой текст. Вы можете удалить часть схемы из URL другого домена (например, //www.someotherdomain.com/handle_cookies.php вместо http://www.someotherdomain.com/handle_cookies.php), заставив использовать ту же схему, что и схема, из которой отправляются файлы cookie. Я настоятельно рекомендую это сделать.

0 голосов
/ 23 августа 2011

Ссылка описывает метод, который приближается к требованию. Но он использует свойство window.name вместо cookies для отправки данных.

Копия кеша Google, потому что оригинальная ссылка на некоторое время заработала.

Использование транспорта window.name для межсайтовых сценариев POST

0 голосов
/ 22 августа 2011

Я думаю, что по соображениям безопасности вы не можете читать / записывать куки для другого домена.Вы можете применить определенный путь для куки, который будет доступен, например, к определенной папке за пределами вашего корня.Я думаю, что работа браузеров заключается в том, что они находят файлы cookie для сайта, к которому они обращаются в данный момент, и используют их соответствующим образом.Но разрешение использования файлов cookie между доменами может привести к возникновению многих угроз.Я думаю, если вы действительно хотите, хотя я не могу обещать, что что-то вроде этого работает полностью.

Если вы создадите скрипт в другом домене, который будет писать cookie-файл на основе триггера, а затем вы используете что-то вроде PHP cURL, чтобы перенести страницу в домен, с которым вы работаете, в настоящий момент вы можетевызвать куки из другого домена.Это чистая теория, хотя я ее не проверял.Идея заключается в том, что, поскольку вы владеете обоими доменами, предполагается, что у вас также есть доступ к обоим хост-серверам.Таким образом, при этом вам нужно что-то с обеих сторон работать друг с другом, чтобы делать то, что вы хотите, а не надеяться на одностороннее решение.

Ссылка: http://www.quirksmode.org/js/cookies.html

...