Ну не всегда. Используя куки, вы хороши. Но «могу ли я смело полагаться на наличие идентификатора», побудило меня расширить обсуждение важным моментом (в основном для справки, так как количество посетителей этой страницы кажется довольно высоким).
PHP может быть настроен для поддержки сессий путем перезаписи URL, а не куки. ( Насколько это хорошо или плохо (<- см., Например, самый верхний комментарий там) - это отдельный вопрос , давайте теперь остановимся на текущем, только с одним дополнительным замечанием: самая заметная проблема с сеансами на основе URL - явный видимость голого идентификатора сеанса - не проблема с внутренними вызовами Ajax, но затем, если он включен для Ajax, он включается и для остальной части сайта, так что там ...)
В случае сеансов перезаписи URL (без файлов cookie) Ajax-вызовы должны сами позаботиться о том, чтобы URL-адреса их запросов были правильно обработаны. (Или вы можете свернуть свое собственное решение. Вы можете даже прибегнуть к ведению сеансов на стороне клиента , в менее требовательных случаях.) Суть заключается в явной заботе, необходимой для обеспечения непрерывности сеанса, если не используются файлы cookie:
Если вызовы Ajax просто извлекают URL-адреса дословно из HTML (как получено из PHP), это должно быть в порядке, так как они уже приготовлены (ммм, приготовлены).
Если им нужно собрать сами URI запроса, идентификатор сессии необходимо добавить в URL вручную. (Проверьте здесь , или источники страницы, сгенерированные PHP ( с перезаписью URL ), чтобы увидеть, как это сделать.)
С OWASP.org :
По сути, веб-приложение может использовать оба механизма, файлы cookie или параметры URL-адреса или даже переключаться с одного на другой (автоматическая перезапись URL-адреса), если выполняются определенные условия (например, наличие веб-клиентов без поддержки файлов cookie или когда файлы cookie не поддерживаются). принято из-за проблем конфиденциальности пользователя).
Из сообщения на форуме Ruby :
При использовании php с cookie-файлами идентификатор сеанса автоматически отправляется в заголовках запросов даже для Ajax XMLHttpRequests. Если вы используете или разрешаете сеансы php на основе URL, вам нужно будет добавлять идентификатор сеанса в каждый URL-адрес Ajax-запроса.
HttpOnly
флаг при установке cookie, что означает, что ваш Javascript не сможет увидеть cookie. Однако cookie все равно будет отправляться как для AJAX, так и для обычных запросов страниц, и будет продолжать работать точно так же. Ваш Javascript просто не увидит егоdocument.cookie
.