Saya mencoba memahami cara menggunakan CORS dan bingung tentang apa yang dilakukan Access-Control-Allow-Credentials
header.
Dokumentasi mengatakan
Menunjukkan apakah respons terhadap permintaan dapat diekspos ketika bendera kredensial benar.
Tapi saya tidak mengerti apa artinya respons "diekspos".
Adakah yang bisa menjelaskan apa header ini disetel ke true (dalam hubungannya dengan flag kredensial diatur ke true) sebenarnya?
http-headers
cors
Nate
sumber
sumber
Jawaban:
Secara default, CORS tidak menyertakan cookie pada permintaan lintas asal. Ini berbeda dari teknik lintas asal lainnya seperti JSON-P. JSON-P selalu menyertakan cookie dengan permintaan, dan perilaku ini dapat menyebabkan kelas kerentanan yang disebut pemalsuan permintaan lintas situs , atau CSRF.
Untuk mengurangi kemungkinan kerentanan CSRF di CORS, CORS membutuhkan server dan klien untuk mengakui bahwa tidak masalah untuk memasukkan cookie pada permintaan. Melakukan hal ini menjadikan cookie keputusan aktif, daripada sesuatu yang terjadi secara pasif tanpa kendali apa pun.
Kode klien harus menyetel
withCredentials
properti padaXMLHttpRequest
ketrue
untuk memberikan izin.Namun, tajuk ini saja tidak cukup. Server harus merespons dengan
Access-Control-Allow-Credentials
tajuk. Menanggapi dengan tajuk initrue
berarti server mengizinkan cookie (atau kredensial pengguna lain) untuk dimasukkan pada permintaan lintas-asal.Anda juga perlu memastikan browser Anda tidak memblokir cookie pihak ketiga jika Anda ingin agar permintaan kredensial lintas-asal berfungsi.
Perhatikan bahwa terlepas dari apakah Anda membuat permintaan yang sama-asal atau lintas-asal, Anda harus melindungi situs Anda dari CSRF (terutama jika permintaan Anda termasuk cookie).
sumber
withCredentials
diatur, tetapi kemudian ketika menerima respons, jika withCredentials diatur, itu hanya akan mengirimkan / memaparkan hasilnya ke panggilan javascript jika respons memiliki Akses Kumpulan header -Control-Allow-Credentials. Jika tidak ada tajuk, itu tidak memaparkan respons, secara efektif menghapusnya.