Rumah > hujung hadapan web > tutorial js > Bagaimana untuk Mengelakkan Menetapkan Pengepala Tersuai dalam Pengepala 'Access-Control-Request-Headers' dalam jQuery AJAX POST Requests?

Bagaimana untuk Mengelakkan Menetapkan Pengepala Tersuai dalam Pengepala 'Access-Control-Request-Headers' dalam jQuery AJAX POST Requests?

DDD
Lepaskan: 2024-11-05 14:36:02
asal
682 orang telah melayarinya

How to Avoid Setting Custom Headers in the

Mengendalikan Pengepala Kompleks dalam Permintaan AJAX POST dengan jQuery

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));
  }
});
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan