Rumah > Artikel > hujung hadapan web > Bagaimana untuk Mengelakkan Menetapkan Pengepala Tersuai dalam Pengepala "Access-Control-Request-Headers" dalam jQuery AJAX POST Requests?
Latar Belakang:
Dalam permintaan AJAX POST menggunakan jQuery, pengepala tersuai boleh ditambah untuk meningkatkan komunikasi dengan pelayan. Cabarannya terletak pada pemerhatian bahawa pengepala tersuai ditambah pada pengepala "Access-Control-Request-Headers" yang kurang biasa diperhatikan dan bukannya pengepala yang dimaksudkan.
Penjelasan:
Apabila penyemak imbas menghantar permintaan AJAX ke domain yang berbeza daripada domain asalnya, penyemak imbas mula-mula menghantar permintaan "preflight" (kaedah PILIHAN) untuk menyemak sama ada pelayan membenarkan pengepala tersuai. Ini dilakukan untuk mengelakkan serangan skrip merentas tapak (XSS).
Sebagai sebahagian daripada permintaan pra-penerbangan ini, penyemak imbas menambah pengepala "Access-Control-Request-Headers", yang menyenaraikan pengepala tersuai yang akan dihantar dalam permintaan sebenar. Pelayan bertindak balas dengan kod status "204 Tiada Kandungan" dan pengepala "Access-Control-Allow-Headers" yang menyatakan pengepala tersuai yang dibenarkan.
Penyelesaian:
Untuk mengelakkan tingkah laku ini dan menetapkan pengepala tersuai terus dalam permintaan POST, anda boleh menetapkan pengepala secara eksplisit dalam fungsi "beforeSend" bagi panggilan jQuery Ajax. Ini memastikan bahawa pengepala ditambahkan pada permintaan sebelum ia dihantar, memintas proses permintaan prapenerbangan.
Berikut ialah contoh cara menetapkan pengepala dalam panggilan jQuery Ajax:
$.ajax({ type: "POST", beforeSend: function(request) { request.setRequestHeader("Authority", authorizationToken); }, url: "entities", data: "json=" + escape(JSON.stringify(createRequestObject)), processData: false, success: function(msg) { $("#results").append("The result =" + StringifyPretty(msg)); } });
Dengan menetapkan pengepala dalam fungsi "beforeSend", jQuery akan menambah pengepala "Authority" kepada permintaan POST sebenar, membolehkan anda menghantar pengepala tersuai dan menerima respons pelayan yang dijangkakan.
Atas ialah kandungan terperinci Bagaimana untuk Mengelakkan Menetapkan Pengepala Tersuai dalam Pengepala "Access-Control-Request-Headers" dalam jQuery AJAX POST Requests?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!