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

Файлы cookie для Safari не распознаются/передаются

Недавно я портировал расширение Chrome для Safari и столкнулся с такой ошибкой (ошибка, функция и т.д.)

Итак, на глобальной странице у меня есть запрос XMLHTTP на защищенную страницу, доступную только после вашего входа.

Пример:

  • Я просто использую браузер - как обычно, вы делаете на Facebook или других защищенных страницах.
  • После этого на глобальной странице я загружаю xmlhttp, доступный только для входа, и он говорит, что я не вошел в систему

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

ps: в Chrome я могу загрузить эту страницу, и он думает, что я действую от имени зарегистрированного пользователя, поэтому я думаю, что есть некоторые ограничения в Safari

pps: я слышал, что в Safari есть блокировка сторонних файлов cookie, но даже если я проверил его на "Никогда не блокировать", он все равно не работает.

4b9b3361

Ответ 1

У меня была эта проблема с Safari 5.1.2 для Windows, но после обновления до текущей версии (5.1.7) проблема исчезла. Возможно, они исправили это на некоторой промежуточной версии. Он также работает для меня в Safari 5.1.3 для Mac OS X.

Ответ 2

К сожалению, проблема все еще существует в версии Safari версии 5.1.7.

Я нашел обходное решение для передачи учетных данных входа (пары имени пользователя/пароля) на глобальную страницу, используя передачу сообщений, а глобальная страница использует их для входа в систему молча.

Ответ 3

Куки файлы могут быть помечены как HttpOnly или Secure. Если он не передает их, вы, вероятно, пытаетесь получить доступ к ресурсу HTTP на том же сайте с целевой страницы HTTPS после входа, поэтому браузер не разрешает отправку безопасного файла cookie по незащищенной ссылке. Фактически, сайты HTTP и HTTPS обрабатываются как отдельные.

Вам нужно либо убедиться, что после входа в систему вы перейдете браузер на HTTP и установите файл cookie HttpOnly или просто выполните XMLHttpRequest через HTTPS. Это было бы более безопасным и на самом деле не увеличивало бы накладные расходы на сервер (это было раньше, когда аппаратное обеспечение было медленным, но Google говорит, что, когда Gmail перешла на использование HTTPS по умолчанию, это не повлияло на загрузку сервера более чем на пару процентов).

Попробуйте настроить весь сайт на HTTPS и посмотреть, исправляет ли он это. Кроме того, используйте firebug и расширение firecookie, чтобы увидеть есть ли у файлов cookie один из этих параметров (правые две колонки).

Ответ 4

Файлы cookie не должны быть "сеансовыми файлами", они должны быть постоянными. Установите срок годности.

Это нужно сделать на стороне сервера. В примере, для Node.js/Express что-то вроде этого:

var session = require('cookie-session');
…
var cookieExpires = new Date();
cookieExpires.setDate(cookieExpires.getDate() + 1); // Set 1 day cookie lifetime
…
app.use(
    session({
        …
        name: 'session',
        expires: cookieExpires
    }))
…