Странное поведение сессии в Google Chrome для Twitter OAuth - PullRequest
0 голосов
/ 22 сентября 2011

по какой-то странной причине в Google Chrome один из моих скриптов имеет серьезные проблемы. Я настраиваю страницу, которая требует подключения Twitter / Facebook. В основном то, что вы делаете:

  1. страница посещения (класс Facebook + Twitter запущен, некоторые настройки сеанса устанавливаются и т. Д.)
  2. Нажмите кнопку подключения для одной из сетей
  3. заполните ваши данные для подключения
  4. Зарегистрируйтесь на нашем сайте (нажав кнопку Отправить).

Теперь все отлично работает в IE / Firefox / Safari, однако Chrome делает некоторые действительно сумасшедшие вещи. Я хотел бы попросить вас посетить эту страницу:

Больше не важно

Скорее всего, в Firefox / IE / Safari он просто отобразит пустую переменную var_dump () переменной $ _SESSION. Сначала это то, что он делает в Chrome aswel, НО! Если вы обновляете страницу один раз в Firefox / IE / Safari, сессия все еще пуста, но в Chrome уже отображаются некоторые ключи.

Я абсолютно не понимаю, откуда взялись эти ключи ... это содержимое viewsessions.php:

session_start();
echo '<pre>';
var_dump($_SESSION);

if(isset($_GET['u'])) {
    unset($_SESSION);   
}

Насколько я знаю, ничего другого не может произойти, кроме приведенного выше, и Firefox / IE / Safari показывают правильное поведение.

Не было бы большой проблемой, если бы все работало нормально, но все сеансовые ключи 'requesttoken_XXXX' принадлежат OAuth Twitter ... и поскольку запрос запрашивается на каждой странице, перенаправление аутентификации на мой сайт не может соответствующий токен и, следовательно, не проверяет подлинность.

Кто-нибудь может увидеть, что происходит? Неужели какая-то страница вызывается сзади? Это известная проблема, связанная с Chrome? У меня действительно нет никаких подсказок, что бы это могло быть ..

Заранее спасибо.

1 Ответ

0 голосов
/ 22 сентября 2011

Проблема решена ..

Почему-то этот файл:

<IfModule mod_rewrite.c>
    Options +FollowSymLinks
    Options -Indexes

    RewriteEngine On
    RewriteBase /

    # Bestaande bestanden of mappen uitsluiten
    RewriteCond %{REQUEST_FILENAME} -f [OR]
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule ^(.*?)$ $1 [L] 

    RewriteRule ^start/$ login.php [L,QSA]
    RewriteRule ^logout/$ logout.php [L,QSA]
    RewriteRule ^timeline/$ timeline.php [L,QSA]

    RewriteRule ^(.*)$ index.php [L]

</IfModule>

Сделал ли какой-то запрос к index.php (я думаю ...), кажется немного странным, потому что я заявил, что если это существующий файл или каталог, он должен просто открыть файл: RewriteRule ^(.*?)$ $1 [L], и я также пометил его как последнее правило для подражания.

Удаление этого последнего RewriteRule решило проблему. Все еще не уверен, почему Chrome отменяет параметр [L] ... если кто-то может объяснить это, это было бы здорово.

...