JQuery dan kerangka kerja lainnya menambahkan header berikut:
X-Diminta-Dengan: XMLHttpRequest
Mengapa ini dibutuhkan? Mengapa server ingin memperlakukan permintaan AJAX berbeda dari permintaan normal?
UPDATE : Saya baru saja menemukan contoh kehidupan nyata menggunakan header ini: https://core.spreedly.com/manual/payment-methods/adding-with-js . Jika pemroses pembayaran diminta tanpa AJAX, itu akan diarahkan kembali ke situs web asli setelah selesai. Ketika diminta dengan AJAX, tidak ada pengalihan yang dilakukan.
jquery
ajax
http-headers
cors
Gili
sumber
sumber
Jawaban:
Alasan yang baik adalah untuk keamanan - ini dapat mencegah serangan CSRF karena header ini tidak dapat ditambahkan ke domain lintas permintaan AJAX tanpa persetujuan server melalui CORS .
Hanya tajuk berikut yang diizinkan lintas domain:
yang lain menyebabkan permintaan "pra-penerbangan" dikeluarkan di browser yang didukung CORS.
Tanpa CORS tidak mungkin untuk ditambahkan
X-Requested-With
permintaan XHR lintas domain.Jika server memeriksa apakah tajuk ini ada, ia tahu bahwa permintaan tersebut tidak dimulai dari domain penyerang yang mencoba mengajukan permintaan atas nama pengguna dengan JavaScript. Ini juga memeriksa bahwa permintaan tersebut tidak POSTed dari bentuk HTML biasa, yang lebih sulit untuk memverifikasi itu bukan lintas domain tanpa menggunakan token. (Namun, memeriksa
Origin
tajuk bisa menjadi opsi di browser yang didukung, meskipun Anda akan membuat browser lama menjadi rentan .)Bypass Flash baru ditemukan
Anda mungkin ingin menggabungkan ini dengan token , karena Flash yang berjalan di Safari pada OSX dapat mengatur header ini jika ada langkah redirect . Tampaknya itu juga berfungsi di Chrome , tetapi sekarang diatasi. Lebih detail di sini termasuk berbagai versi yang terpengaruh.
OWASP Merekomendasikan menggabungkan ini dengan pemeriksaan Asal dan Perujuk :
Namun, untuk alasan yang sudah dibahas memeriksa Asal bisa rumit.
Memperbarui
Menulis posting blog yang lebih mendalam tentang CORS, CSRF dan X-Requested-With di sini .
sumber
X-Requested-With
header juga?Pastikan Anda membaca jawaban SilverlightFox. Ini menyoroti alasan yang lebih penting.
Alasannya sebagian besar adalah bahwa jika Anda tahu sumber permintaan Anda mungkin ingin menyesuaikannya sedikit.
Misalnya katakanlah Anda memiliki situs web yang memiliki banyak resep. Dan Anda menggunakan kerangka jQuery khusus untuk memasukkan resep ke dalam wadah berdasarkan tautan yang dikliknya. Tautannya mungkin
www.example.com/recipe/apple_pie
Sekarang biasanya kembali satu halaman penuh, header, footer, konten resep dan iklan. Tetapi jika seseorang menjelajah situs web Anda beberapa bagian sudah dimuat. Jadi Anda dapat menggunakan AJAX untuk mendapatkan resep yang telah dipilih pengguna tetapi untuk menghemat waktu dan bandwidth jangan memuat header / footer / iklan.
Sekarang Anda bisa menulis titik akhir sekunder untuk data seperti
www.example.com/recipe_only/apple_pie
tetapi itu lebih sulit untuk dipertahankan dan dibagikan kepada orang lain.Tetapi lebih mudah untuk mendeteksi bahwa itu adalah permintaan ajax yang membuat permintaan dan kemudian mengembalikan hanya sebagian dari data. Dengan cara itu pengguna membuang lebih sedikit bandwidth dan situs tampak lebih responsif.
Kerangka kerja hanya menambahkan header karena beberapa mungkin merasa berguna untuk melacak permintaan mana yang ajax dan yang tidak. Tetapi sepenuhnya tergantung pada pengembang untuk menggunakan teknik seperti itu.
Sebenarnya agak mirip dengan
Accept-Language
header. Peramban dapat meminta situs web, tunjukkan versi Rusia dari situs web ini tanpa harus memasukkan / ru / atau yang serupa di URL.sumber
Accept
header. Menggunakan header khusus untuk ini sepertinya cara yang salah untuk dilakukan.Beberapa kerangka kerja menggunakan header ini untuk mendeteksi permintaan xhr mis. Keamanan grails spring menggunakan header ini untuk mengidentifikasi permintaan xhr dan memberikan respons json atau respons html sebagai respons.
Sumber: http://grails-plugins.github.io/grails-spring-security-core/guide/helperClasses.html
sumber