Файлы cookie расширения Safari не распознаны / пропущены - PullRequest
20 голосов
/ 25 июля 2011

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

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

Пример:

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

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

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

pps: я слышал, что в Safari есть опция Блокировать сторонние куки, но даже если я установил флажок «Никогда не блокировать», он все равно не работает

Ответы [ 4 ]

3 голосов
/ 04 ноября 2012

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

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

1 голос
/ 07 июля 2012

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

0 голосов
/ 26 марта 2015

Cookies не должны быть "Session cookies", они должны быть постоянными.Установите срок действия.

Это нужно сделать на стороне сервера.Например, для 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
    }))
…
0 голосов
/ 15 февраля 2012

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

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

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

...