Pertanyaan Mencegah Cookie Dari Dikirim pada Permintaan AJAX


Saya memiliki layanan web yang saya gunakan dari skrip tetapi itu tidak memerlukan informasi apa pun yang disimpan di cookie. Setiap kali saya membuat permintaan ke layanan, cookie dikirim bersama dengan itu. Saya memahami bahwa secara default cookie dikirim dengan permintaan HTTP, tetapi adakah cara untuk mengganti perilaku itu dan tidak mengirim cookie?

Singkatnya, saya mengeluarkan permintaan saya seperti ini:

$.ajax({
    type: "POST",
    cache: false,
    url: url,
    data: data,
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function(response) { successFunc(response); },
    error: function(xhr) { errorFunc(xhr); }
});

32
2018-05-13 18:13


asal


Jawaban:


Kirim permintaan AJAX ke subdomain tanpa cookie di server Anda. Jadi aplikasi Anda adalah www.mydomain.com dan permintaan ajax disajikan dari api.mydomain.com yang tidak pernah Anda tetapkan cookie. Juga ide bagus untuk melakukan ini dengan file statis seperti gambar dll ...

lihat bagian "Menggunakan Domain Bebas Cookie untuk Komponen" http://developer.yahoo.com/performance/rules.html


14
2018-05-14 04:08



Pendekatan lain adalah sebelum melakukan $ .ajax:
1. dapatkan cookie dari browser untuk domain Anda dengan javascript (simpan dalam variabel global)
2. hapus cookie untuk domain Anda dengan javascript dari browser
3. lakukan panggilan $ .ajax
4. tempatkan cookie (dari variabel global) kembali di browser.

Jika Anda tidak memerlukan cookie dari domain Anda sama sekali, hapus saja (jadi lompati 1. dan 4.).


5
2017-12-13 12:05



Tidak, cookie akan selalu dikirim.

Anda bisa bagaimana cookie Anda dikirim ke browser, dan gunakan http bendera pada mereka, yang berarti mereka tidak akan dikirim melalui javascript.

Atau (yang banyak digunakan situs), buat subdomain baru yang tidak pernah Anda kirimi cookie.


1
2018-05-24 15:01



Anda benar mengatakan bahwa browser mengirim cookie pencocokan (jalur + domain + sesi) bersama dengan permintaan HTTP. Ini sangat penting agar mekanisme cookie bekerja.

Tidak bisakah Anda, tidak membaca cookie?

Selain itu, ketika cookie pada awalnya ditetapkan, Anda dapat mengatur direktori apa (dan subdirektorinya) yang dapat mengakses cookie.

Misalnya, jika Anda menetapkan cookie untuk dibaca di / foo / bar / only, file yang terletak di /whatever/ajaxHandler.php tidak dapat melihat cookie tersebut.

Lihat ini: http://us.php.net/setcookie

Meskipun saya tidak yakin apakah Anda menggunakan PHP, ini bisa menjadi titik awal yang baik untuk Anda.


0
2018-05-13 18:21



Tanda withCredentials diperlukan untuk benar-benar mengirim cookie dengan panggilan ajax lintas-asal.

Lihat: https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/withCredentials

Menyetelnya ke false akan mencegah cookie dikirim.

Dengan permintaan yang sama, Anda harus mengikuti jawaban lain yang disebutkan di sini.


0
2018-02-08 18:33