Ralat CORS: Mengubah Suai Pengepala Dibenarkan
Apabila cuba melaksanakan permintaan POST dengan muat naik fail, penyemak imbas sering menghadapi ralat: "Permintaan medan pengepala Content-Type tidak dibenarkan oleh Access-Control-Allow-Headers."
Punca Punca:
Ralat ini berlaku kerana pelayar pra-penerbangan meminta untuk rentas asal permintaan dengan jenis kandungan bukan standard seperti "multipart/form-data" dengan menghantar permintaan OPTIONS. Permintaan OPTIONS menyemak sama ada pelayan membenarkan pengepala permintaan khusus yang tidak disertakan dalam set HTTP standard.
Penyelesaian Percubaan Awal:
Untuk menyelesaikan isu ini, pembangun pada mulanya cuba menambah pengepala berikut pada permintaan POST:
"Access-Control-Allow-Origin": "*", "Access-Control-Allow-Methods": "GET,POST,PUT,DELETE,OPTIONS", "Access-Control-Allow-Headers": "Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With"
Ralat Seterusnya:
Walau bagaimanapun, ini mengakibatkan ralat baharu: "Minta akses medan pengepala- Control-Allow-Origin tidak dibenarkan oleh Access-Control-Allow-Headers."
Penyelesaian:
Isu timbul kerana pelayan mesti membenarkan "Kandungan- Taip" dalam konfigurasi "Access-Control-Allow-Headers". Penyemak imbas menghantar permintaan OPTIONS prapenerbangan dengan pengepala "Jenis Kandungan" dan jika pelayan tidak membenarkannya, permintaan CORS akan gagal.
Untuk menyelesaikan ralat ini, pembangun hendaklah sama ada menulis ganti "aplikasi lalai Angular" /json" jenis kandungan atau benarkan "Content-Type" dalam konfigurasi Access-Control-Allow-Headers pelayan.
Sampel Kod Sudut:
Untuk menulis ganti lalai pengepala dalam Angular, kod berikut boleh digunakan:
<code class="typescript">$http.post(url, data, { headers: { 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8' } });</code>
Atas ialah kandungan terperinci Ralat CORS: Mengapa Pelayan Saya Menolak \'Jenis-Kandungan\' dalam Permintaan Prapenerbangan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!