Как установить флаг HttpOnly для файла cookie с помощью javascript?

Я пытаюсь создать файл 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;";

Спасибо -


person user617136    schedule 15.02.2011    source источник
comment
Разве весь смысл HttpOnly не в том, чтобы предотвратить доступ к нему Javascript? Я бы поставил под сомнение вариант использования.   -  person Steven    schedule 15.02.2011
comment
Насколько я знаю, файлы cookie только для HTTP не могут быть доступны/созданы с помощью JavaScript. В этом суть, верно?   -  person JCOC611    schedule 15.02.2011
comment
Разве установка флага httponly с помощью JavaScript не помешает цели?   -  person alex    schedule 15.02.2011
comment
3 коммента говорят одно и то же :) круто мы все мыслим одинаково!   -  person JCOC611    schedule 15.02.2011
comment
Я бы подумал, что вы могли бы создать его, просто не читая его?   -  person user617136    schedule 15.02.2011
comment
Небольшой нюанс: HttpOnly файлы cookie нельзя установить из браузера, но это вполне возможно с помощью JS, работающего на сервере... в приложении Express на основе Node JS для пример.   -  person Stijn de Witt    schedule 21.01.2017


Ответы (1)


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

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

Файл cookie HttpOnly поддерживается большинством современных браузеров. В поддерживаемом браузере файл cookie сеанса HttpOnly будет использоваться только при передаче запросов HTTP (или HTTPS), что ограничивает доступ из других, не-HTTP API (таких как 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, перезагрузите страницу, и вы увидите пустое предупреждение. Но при этом браузер сохраняет куки для отправки во время запроса к серверу.

person Yevhen Pavliuk    schedule 19.06.2012