Ну, не завжди. Використовуючи файли cookie, ви добре. Але "чи можу я спокійно покладатися на присутність ідентифікатора" закликав мене продовжити обговорення з важливим моментом (переважно для довідки, оскільки кількість відвідувачів цієї сторінки здається досить високою).
PHP може бути налаштований на підтримку сеансів шляхом перезапису URL-адрес замість файлів cookie. ( Як це добре чи погано (<- див., Наприклад, найвищий коментар там) - це окреме питання , давайте тепер дотримуватимемося поточного, лише з однієї сторони: найвідоміша проблема із сеансами на основі URL - грубість видимість відкритого ідентифікатора сеансу - це не проблема із внутрішніми дзвінками Ajax, але тоді, якщо він увімкнено для Ajax, він також увімкнено для решти сайту, тому там ...)
У разі сеансів перезапису URL-адрес (без cookie) Ajax-дзвінки повинні самі подбати про те, щоб URL-адреси їх запиту були правильно створені. (Або ви можете розгорнути власне власне рішення. Ви можете навіть вдатися до підтримки сеансів на стороні клієнта , у менш складних випадках.) Справа полягає в явній обережності, необхідній для безперервності сеансу, якщо не використовуються файли cookie:
Якщо Ajax викликає лише вилучення URL-адрес дослівно з HTML (як отримано від PHP), це повинно бути добре, оскільки вони вже готові (umm, cookified).
Якщо їм потрібно самостійно зібрати URI запитів, ідентифікатор сеансу потрібно додати до URL-адреси вручну. (Перевірте тут , або джерела сторінок, створені PHP ( із перезаписом URL-адреси ), щоб побачити, як це зробити.)
Від OWASP.org :
Ефективно веб-додаток може використовувати як механізми, файли cookie чи параметри URL-адреси, або навіть перемикатися з одного на інший (автоматичне перезапис URL-адрес), якщо дотримуються певні умови (наприклад, існування веб-клієнтів без підтримки файлів cookie або коли файли cookie не є прийнято через проблеми конфіденційності користувачів).
З публікації на форумі Ruby :
Під час використання php із файлами cookie ідентифікатор сеансу автоматично надсилатиметься у заголовки запитів навіть для Ajax XMLHttpRequests. Якщо ви використовуєте або дозволяєте URL-сеанси на основі URL, вам доведеться додати ідентифікатор сеансу до кожної URL-адреси запиту Ajax.
HttpOnlyпрапор під час встановлення файлу cookie, що означає, що ваш Javascript не зможе побачити файл cookie. Однак cookie все одно буде надіслано як для запиту AJAX, так і для звичайних запитів на сторінку, і працюватиме так само. Ваш Javascript просто не побачить його вdocument.cookie.