Подтвердить что ты не робот

Предотвращение отправки файлов cookie на запрос AJAX

У меня есть веб-служба, которую я вызываю из script, но для нее не требуется никакой информации, хранящейся в файлах cookie. Каждый раз, когда я делаю запрос к сервису, cookie отправляется вместе с ним. Я понимаю, что по умолчанию файлы cookie отправляются с HTTP-запросом, но есть ли вообще способ переопределить это поведение и не отправлять cookie?

Вкратце, я выдаю свой запрос следующим образом:

$.ajax({
    type: "POST",
    cache: false,
    url: url,
    data: data,
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function(response) { successFunc(response); },
    error: function(xhr) { errorFunc(xhr); }
});
4b9b3361

Ответ 1

Отправьте запросы AJAX на субдомен без файлов cookie на вашем сервере. Таким образом, вы используете приложение www.mydomain.com, и запросы ajax подаются с api.mydomain.com, на которые вы никогда не устанавливали cookie. Также замечательная идея сделать это со статическими файлами, такими как изображения и т.д.

см. раздел "Использование разделов без содержания cookie для компонентов" http://developer.yahoo.com/performance/rules.html

Ответ 2

Другой подход был бы до выполнения $.ajax:
1. Получите файлы cookie из браузера для своего домена с помощью javascript (сохраните их в глобальной переменной)
2. Удалите файлы cookie для своего домена с помощью javascript из браузера
3. сделайте вызов $.ajax
4. поместите куки (из глобальной переменной) обратно в браузер.

Если вам не нужны файлы cookie из вашего домена, просто удалите их (поэтому пропустите 1. и 4.).

Ответ 3

Нет, cookie всегда будет отправлен.

Вы могли бы отправить ваши файлы cookie в браузер и использовать на них флаг http, что означает, что они не будут отправляться через javascript.

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

Ответ 4

Правильно ли вы говорите, что браузеры отправляют совпадения (путь + домен + сеанс) вместе с HTTP-запросом. Это важно для работы механизма cookie.

Не могли бы вы просто не читать куки?

Кроме того, когда cookie изначально установлен, вы можете установить, какой каталог (и его подкаталоги) может получить доступ к файлу cookie.

Например, если вы устанавливаете cookie для чтения в /foo/bar/only, файл, расположенный в /whatever/ajaxHandler.php, не может видеть эти файлы cookie.

Проверьте это: http://us.php.net/setcookie

Пока я не уверен, что вы используете PHP, это может быть хорошей отправной точкой для вас.

Ответ 5

Флаг withCredentials необходим для фактической отправки файлов cookie с помощью вызовов ajax с перекрестным происхождением.

Смотрите: https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/withCredentials

Установка значения false приведет к тому, что cookie не будет отправлен.

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