Rumah >hujung hadapan web >tutorial js >Bagaimanakah cara saya memasukkan pengepala tersuai dalam permintaan AJAX POST tanpa mencetuskan semakan pra-penerbangan?

Bagaimanakah cara saya memasukkan pengepala tersuai dalam permintaan AJAX POST tanpa mencetuskan semakan pra-penerbangan?

Susan Sarandon
Susan Sarandonasal
2024-11-07 19:08:02541semak imbas

How do I include custom headers in an AJAX POST request without triggering a pre-flight check?

Pengepala Permintaan Kawalan Akses: Memahami Semakan Pra-penerbangan

Apabila membuat permintaan AJAX POST menggunakan jQuery, adalah mungkin untuk memasukkan pengepala tersuai untuk mengawal gelagat permintaan . Walau bagaimanapun, adalah penting untuk memahami peranan Pengepala Permintaan Kawalan Akses (CORS) dalam permintaan silang asal.

Secara lalai, jQuery mendahului permintaan silang asal dengan permintaan OPTIONS untuk memulakan semakan pra-penerbangan . Semakan ini memastikan pelayan membenarkan kaedah HTTP khusus dan pengepala disertakan dalam permintaan asal. Semasa semakan pra-penerbangan ini, jQuery secara automatik menambah pengepala Access-Control-Request-Headers pada permintaan, yang menentukan pengepala tersuai yang terdapat dalam permintaan asal.

Dalam contoh yang disediakan:

$.ajax({
    ...
    headers: {
        "My-First-Header":"first value",
        "My-Second-Header":"second value"
    }
    ...
})

Parameter permintaan termasuk dua pengepala tersuai. Apabila semakan pra-penerbangan dimulakan, penyemak imbas secara automatik mengubah suai pengepala permintaan kepada yang berikut:

...
Access-Control-Request-Headers: My-First-Header,My-Second-Header
...

Ini memastikan pelayan mengetahui pengepala tersuai untuk disertakan dalam permintaan POST sebenar. Walau bagaimanapun, pengepala tersuai itu sendiri tidak terdapat dalam permintaan semakan pra-penerbangan.

Untuk memasukkan pengepala tersuai dalam permintaan POST sebenar, anda boleh menggunakan fungsi beforeSend seperti berikut:

$.ajax({
    ...
    beforeSend: function(xhr) {
        xhr.setRequestHeader("My-First-Header", "first value");
        xhr.setRequestHeader("My-Second-Header", "second value");
    }
    ...
})

Dalam kes ini, pengepala tersuai akan disertakan dalam permintaan POST secara langsung, tanpa mencetuskan semakan pra-penerbangan. Ambil perhatian bahawa untuk permintaan silang asal, pelayan mesti membenarkan pengepala yang ditentukan secara eksplisit dalam pengepala respons Access-Control-Allow-Headers.

Atas ialah kandungan terperinci Bagaimanakah cara saya memasukkan pengepala tersuai dalam permintaan AJAX POST tanpa mencetuskan semakan pra-penerbangan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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