Я решил потратить несколько часов на то, чтобы защитить свой сайт с помощью SSL. Сервер работает нормально, но врезался в стену с помощью моего PHP $ _SESSION. Я понимаю проблему передачи идентификаторов сеансов между HTTP и HTTPS, но здесь этого не происходит (я думаю). Свернутая последовательность сеансов выглядит примерно так:
login.html:
<form action="https://www.mydomain.com/login.php">
login.php:
if login details correct {
session_set_cookie_params(3600,'/','mydomain.com',true);
session_start();
$_SESSION['...
session_commmit
На этом этапе login.js (который управляет диалогом в стиле AJAX) будет перенаправлен на http://www.mydomain.com/desktop.html. Код JS, поддерживающий HTML, затем запускает
$.ajax({ url: "https://www.mydomain.com/lib/mySQL/mySQL.php", ... });
mySQL.php:
if (!isset($_COOKIE['PHPSESSID'])) {
throw wobbly
До того, как я переключился на HTTPS, эта последовательность работала нормально во всех браузерах; с HTTPS он генерирует колебания во всех браузерах :( Я могу подтвердить (просмотрев данные Cookie), что Firefox записывает cookie следующим образом:
mydomain.com
Name: PHPSESSID
Content: gobbledygook
Domain: .mydomain.com
Path: /
Send For: Encrypyed connections only.
Expires: in 1hr.
Все появляется согласно книге. Есть ли у вас какие-либо предложения относительно того, что происходит?
Спасибо.
PS: я не использовал session_set_cookie_params, прежде чем наткнулся на пост на SO при исследовании этой проблемы, предлагая мне это сделать. То есть до того, как я установил secure = true, Firefox «отправил бы» любые подключения, и это тоже не сработало.
РЕДАКТИРОВАТЬ: я наблюдаю еще одну деталь. Я ожидаю, что на панели Net в Firebug мои AJAX-запросы будут отображаться как "POST https://www.mydomain.com/lib/mySQL/mySQL.php", и я смогу выбрать POST Rider и посмотреть, что произошло. Я не получаю это за неудавшийся запрос. Как ни странно, дисплей Firebug "ОПЦИИ https://www.mydomain.com/lib/mySQL/mySQL.php" красного цвета и без POST райдера.