Rumah >hujung hadapan web >tutorial js >Mengapa Permintaan Pengambilan Saya Gagal dengan Ralat 'Permintaan Silang Asal Disekat' dan Bagaimana Saya Boleh Membetulkannya Menggunakan CORS?

Mengapa Permintaan Pengambilan Saya Gagal dengan Ralat 'Permintaan Silang Asal Disekat' dan Bagaimana Saya Boleh Membetulkannya Menggunakan CORS?

Patricia Arquette
Patricia Arquetteasal
2024-12-23 08:23:11352semak imbas

Why Does My Fetch Request Fail with a

Permintaan Silang Asal Disekat: Memahami CORS dan Sintaks Ambil

Dalam bidang permintaan silang asal, di mana penyemak imbas menghalang skrip daripada mengakses sumber dari asal yang berbeza atas sebab keselamatan, pembangun sering menghadapi masalah "Tidak Pengepala 'Access-Control-Allow-Origin' hadir pada ralat sumber yang diminta". Untuk menyelesaikan isu ini, adalah penting untuk memahami konsep CORS (Perkongsian Sumber Silang Asal) dan implikasinya terhadap sintaks Fetch kami.

Teka-teki CORS

CORS ialah mekanisme pelayar yang dikuatkuasakan yang melindungi pengguna daripada kod hasad yang dijalankan di tapak web lain daripada mengakses maklumat sensitif yang disimpan tempatan. Secara lalai, penyemak imbas menghalang permintaan silang asal daripada kod JavaScript, tetapi ia menyediakan cara untuk melonggarkan sekatan ini dengan menambahkan pengepala Access-Control-Allow-Origin pada respons daripada pelayan. Pengepala ini menentukan asal mana yang dibenarkan untuk mengakses sumber.

Menyahkod Ralat Sintaks

Dalam coretan kod yang ditentukan, pembangun cuba menggunakan mod: 'tidak atribut -cors dalam objek Ambil untuk melumpuhkan CORS. Walau bagaimanapun, pendekatan ini pada asasnya cacat kerana mod: 'no-cors' berkesan mengarahkan penyemak imbas untuk menyekat sebarang akses kepada pengepala dan badan respons. Akibatnya, walaupun pelayan menghantar respons dengan pengepala Access-Control-Allow-Origin yang sesuai, ia akan diabaikan oleh penyemak imbas, yang membawa kepada ralat sintaks dalam panggilan ambil.

Perangkap mod: 'no-cors'

Menggunakan mod: 'no-cors' biasanya tidak disyorkan, kerana ia boleh mewujudkan had yang tidak dijangka dalam pengendalian pelayar terhadap respons. Khususnya, mod ini menyekat penyemak imbas daripada mendedahkan kandungan dan pengepala respons, yang selalunya diperlukan untuk pengendalian data yang betul dalam kod JavaScript.

Penyelesaian Proksi

Untuk memintas sekatan CORS tanpa menjejaskan keselamatan penyemak imbas, kami boleh menggunakan proksi CORS. Proksi bertindak sebagai perantara, membuat permintaan silang asal bagi pihak pelanggan dan menambahkan pengepala CORS yang diperlukan pada respons sebelum menyerahkannya kembali kepada peminta asal.

Postmen Versus Browsers

Adalah penting untuk ambil perhatian bahawa walaupun Postman, alat ujian permintaan HTTP yang popular, tidak menguatkuasakan sekatan CORS secara lalai, pelayar lakukan. Perbezaan ini berpunca daripada fakta bahawa Posman ialah alat penyahpepijatan yang bertujuan untuk menguji titik akhir API, manakala penyemak imbas mengutamakan keselamatan pengguna.

Ringkasan

Kesimpulannya, mod: 'no-cors' harus digunakan hanya dalam keadaan terhad di mana respons legap dikehendaki. Proksi CORS menawarkan penyelesaian yang berharga untuk permintaan silang asal sambil mengekalkan keselamatan penyemak imbas. Memahami selok-belok CORS dan menggunakan teknik yang sesuai adalah penting untuk membolehkan komunikasi yang selamat dan lancar antara tapak web dan sumbernya.

Atas ialah kandungan terperinci Mengapa Permintaan Pengambilan Saya Gagal dengan Ralat 'Permintaan Silang Asal Disekat' dan Bagaimana Saya Boleh Membetulkannya Menggunakan CORS?. 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