Можно ли отправить HTTP-запрос без файлов cookie? - PullRequest
3 голосов
/ 20 февраля 2011

Мне нужно один раз отправить личные данные с сервера в браузер.Я хочу сохранить это в печенье.Эти данные будут позже использованы в коде Javascript.Но я хочу никогда не отправлять (!) Эти личные данные на сервер, когда браузер выполняет HTTP-запрос (из-за безопасности).Я знаю, что я могу установить значение «путь» в cookie (то есть некоторый абстрактный путь), но тогда я не смогу прочитать этот cookie (я смогу читать из этого абстрактного пути, но если это так, браузеротправьте этот cookie на сервер один раз - но, как я уже сказал, эти данные не могут быть отправлены на сервер).

Итак, мой вопрос: возможно ли как-то не отправлять cookie с запросом HTTP?

Ответы [ 4 ]

1 голос
/ 20 февраля 2011

Если вы отправляете эти личные данные с сервера в браузер, тогда они все равно будут доступны.Я не думаю, что это имеет большое значение, что он будет включен в последующие запросы.

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

Если честно, звучит так, будто вам нужно переосмыслить свою стратегию здесь.

0 голосов
/ 18 октября 2018

Как отметил Ричард Х, данные в файлах cookie видны пользователю, если они знают, где искать. Так что это не очень хорошее место для хранения секретов.

Тем не менее, у меня было другое приложение, в котором нужно было хранить много данных на стороне клиента, и я столкнулся с этой же проблемой. (В моем приложении мне нужно было сделать приложение способным работать в автономном режиме и сохранять действия пользователя в случае сбоя ПК или сбоя веб-сайта.) Решение довольно простое:

1) Сохраните данные cookie в переменной JavaScript. (Или сохранить его в переменной уже.)

2) Удалить куки. Вот функция, которая может стереть куки:

function cookieErase (name) {
  document.cookie = name+'=; Max-Age=-99999999;path=/';
}

Если у вас есть несколько файлов cookie (как было в моем случае), вы должны запустить вышеуказанную функцию для каждого файла cookie, который вы сохранили. Существует код для итерации каждого файла cookie, но на практике вы, вероятно, уже знаете названия больших файлов cookie и не хотите удалять другие файлы cookie, на которые полагается ваш веб-сайт.

3) Отправьте запрос как обычно.

4) Восстановить данные cookie из сохраненных переменных.

Вот некоторые оптимизации, которые вы можете использовать:

1) Этот код активируется только при неверном запросе статуса 400 (что вы получите, если данные cookie слишком велики). Иногда ваши данные не слишком велики, поэтому удаление не требуется.

2) Восстановите данные куки после тайм-аута, если они не нужны немедленно. Таким образом, вы можете сделать несколько запросов и восстановить данные только в случае простоя. Это означает, что ваши пользователи могут получить быстрый опыт при активном использовании вашего сайта.

3) В тот момент, когда вы сможете, попытайтесь переместить любые данные на серверную сторону, чтобы снизить нагрузку на клиента / связь. В моем случае, когда подключение восстановлено, все действия синхронизируются как можно скорее.

0 голосов
/ 20 февраля 2011

Я не думаю, что вы сможете заставить браузер не пересылать cookie, если он действителен для этого запроса.

Возможно, лучшим способом было бы удалить cookie внутри JS один раз.вы прочитали данные из него:

http://techpatterns.com/downloads/javascript_cookies.php

Если вам нужно снова вернуть их в JS при следующем ответе, просто попросите сервер повторно отправить его, иудалите его еще раз на стороне клиента.

Я должен сказать, что отправка данных, которые вы считаете «частными», таким образом, не кажется полностью уместной - так как эту информацию можно легко просмотретьиспользуя прокси-сервер какого-то типа между браузером и сервером.

0 голосов
/ 20 февраля 2011

проверить эту страницу для идей. Это может дать вам подсказку, что делать. Предоставление большего количества информации, чем это, вне моей компетенции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...