Как мне установить флаг HttpOnly для куки с javascript? - PullRequest
23 голосов
/ 15 февраля 2011

Я пытаюсь создать cookie-файл с включенным флагом HttpOnly.

Хотя, кажется, существует множество ресурсов о том, как сделать это в Java и .Net, мне нужно сделать это вjavascript.

Вот моя (в настоящее время не работает) функция

createCookie = function(name,value,days) {
if (days) {
    var date = new Date();
    date.setTime(date.getTime()+(days*24*60*60*1000));
    var expires = "; expires="+date.toGMTString();
}
else var expires = "";
document.cookie = name+"="+value+expires+"; domain=my.domain.com; path=/; HttpOnly;";

Спасибо -

1 Ответ

23 голосов
/ 19 июня 2012

Вы не можете получить доступ к cookie HttpOnly в JavaScript.

Следующая цитата заимствована из материала Википедии :

Файл cookie HttpOnly поддерживается большинством современных браузеров. В поддерживаемом браузере cookie-файл сеанса HttpOnly будет использоваться только при передаче запросов HTTP (или HTTPS), таким образом ограничивает доступ из других API, не поддерживающих HTTP (например, JavaScript) .

Другими словами, файлы cookie HttpOnly предназначены для использования только на стороне сервера.

Я написал пример на PHP:

<?php
$name = 'foo';
$value = 'bar';
$expirationTime = 0;    // Session cookie.
$path = '/';
$domain = 'localhost';
$isSecure = false;
$isHttpOnly = false;
setcookie($name, $value, $expirationTime, $path, $domain, $isSecure, $isHttpOnly);
?>
<script>
alert(document.cookie);
</script>

Это оповещение foo=bar.

Удалите cookie, измените $isHttpOnly на true, перезагрузите страницу, и вы увидите пустое предупреждение. Но в то же время браузер сохраняет cookie для отправки его во время запроса к серверу.

...