Rumah >hujung hadapan web >tutorial js >Mengapakah menggunakan mod 'no-cors' Fetch bukan penyelesaian untuk mengendalikan permintaan silang asal?

Mengapakah menggunakan mod 'no-cors' Fetch bukan penyelesaian untuk mengendalikan permintaan silang asal?

Susan Sarandon
Susan Sarandonasal
2024-12-14 09:33:11243semak imbas

Why is using Fetch's 'no-cors' mode not the solution for handling cross-origin requests?

Menggunakan Fetch dengan Mod 'tanpa cors'

API Fetch menyediakan cara yang mudah untuk membuat permintaan kepada pelayan. Walau bagaimanapun, apabila mengakses sumber silang asal, anda mungkin menghadapi ralat "Tiada pengepala 'Access-Control-Allow-Origin' pada sumber yang diminta." Ralat ini menunjukkan sekatan keselamatan yang dikenakan oleh Dasar Same-Origin.

Untuk melumpuhkan CORS dalam Ambil, adalah menarik untuk menggunakan pilihan { mod: 'no-cors' }. Walau bagaimanapun, pendekatan ini tidak betul dan tidak diingini.

Mod 'no-cors': Salah Langkah

mod 'no-cors' pada dasarnya menghalang penyemak imbas daripada mengakses respons badan dan tajuk. Ini bermakna kod anda tidak akan dapat memproses atau menggunakan data yang diambil. Adalah penting untuk memahami bahawa melumpuhkan CORS tidak mengatasi Dasar Asal Sama. Ia hanya mempengaruhi cara penyemak imbas mengendalikan respons.

Penyelesaian: Proksi CORS

Daripada melumpuhkan CORS, anda harus menggunakan proksi CORS. Proksi bertindak sebagai perantara antara kod bahagian hadapan anda dan pelayan sasaran. Apabila anda menghantar permintaan melalui proksi, ia memajukan permintaan kepada pelayan, menerima respons dan menambah pengepala Access-Control-Allow-Origin yang diperlukan sebelum menghantarnya kembali ke kod anda. Ini membolehkan kod anda mengakses asal silang respons.

Untuk menyediakan proksi CORS, anda boleh menggunakan perkhidmatan sedia ada atau menggunakan proksi anda sendiri menggunakan platform seperti Heroku.

Pemahaman Permintaan Silang Asal

Adalah penting untuk ambil perhatian bahawa walaupun anda boleh mengakses sumber silang asal dalam Posman, penyemak imbas mengenakan sekatan pada kod bahagian hadapan yang dijalankan dalam apl web. Untuk memastikan akses sumber silang asal, respons mesti termasuk pengepala Access-Control-Allow-Origin.

Respons Legap: Kaveat

Sementara 'tiada-kor' mod melumpuhkan CORS, ia juga mencipta respons legap. Respons legap mempunyai had tertentu, termasuk:

  1. Ketidakupayaan untuk membaca pengepala respons atau kandungan kandungan
  2. Ketidakupayaan untuk menggunakan respons dalam konteks bukan HTML (mis., $