Ya, tidak selalu. Menggunakan cookie, Anda baik. Tetapi "bisakah saya mengandalkan id yang ada saat ini" mendesak saya untuk memperpanjang diskusi dengan poin penting (kebanyakan untuk referensi, karena jumlah pengunjung halaman ini tampaknya cukup tinggi).
PHP dapat dikonfigurasi untuk mempertahankan sesi dengan penulisan ulang URL, bukan cookie. ( Bagaimana ini baik atau buruk (<- lihat misalnya komentar paling atas di sana) adalah pertanyaan terpisah , sekarang mari kita berpegang pada pertanyaan saat ini, hanya dengan satu catatan: masalah yang paling menonjol dengan sesi berbasis URL - terang-terangan visibilitas ID sesi telanjang - bukan masalah dengan panggilan Ajax internal; tapi kemudian, jika dihidupkan untuk Ajax, itu dihidupkan untuk seluruh situs, juga, jadi di sana ...)
Dalam hal sesi penulisan ulang URL (tanpa masak), panggilan Ajax harus mengurusnya sendiri sehingga URL permintaan mereka dibuat dengan benar. (Atau Anda dapat menggulirkan solusi kustom Anda sendiri. Anda bahkan dapat menggunakan sesi pemeliharaan di sisi klien , dalam kasus yang kurang menuntut.) Intinya adalah perawatan eksplisit yang diperlukan untuk kelangsungan sesi, jika tidak menggunakan cookie:
Jika panggilan Ajax hanya mengekstrak URL kata demi kata dari HTML (seperti yang diterima dari PHP), itu tidak masalah, karena sudah dimasak (umm, dimasak).
Jika mereka perlu merakit sendiri URI permintaan, ID sesi perlu ditambahkan ke URL secara manual. (Periksa di sini , atau sumber halaman yang dihasilkan oleh PHP ( dengan penulisan ulang URL aktif ) untuk melihat bagaimana melakukannya.)
Dari OWASP.org :
Secara efektif, aplikasi web dapat menggunakan mekanisme, cookie atau parameter URL, atau bahkan beralih dari satu ke yang lain (penulisan ulang URL otomatis) jika kondisi tertentu terpenuhi (misalnya, keberadaan klien web tanpa dukungan cookie atau ketika cookie tidak diterima karena masalah privasi pengguna).
Dari posting Ruby-forum :
Saat menggunakan php dengan cookie, ID sesi akan secara otomatis dikirim dalam header permintaan bahkan untuk Ajax XMLHttpRequests. Jika Anda menggunakan atau mengizinkan sesi php berbasis URL, Anda harus menambahkan id sesi ke setiap url permintaan Ajax.
HttpOnly
bendera ketika mengatur cookie yang berarti bahwa Javascript Anda tidak akan dapat melihat cookie. Namun cookie akan tetap dikirim untuk kedua AJAX dan permintaan halaman yang teratur dan terus bekerja persis sama. Javascript Anda tidak akan melihatnyadocument.cookie
.