Ну, не завжди. Використовуючи файли 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
.