Isu: Ralat Permintaan Silang Asal dengan Pengepala
Apabila cuba menghantar fail dengan permintaan POST, pembangun mungkin menghadapi ralat yang menunjukkan bahawa pengepala permintaan khusus tidak dibenarkan oleh pengepala respons Access-Control-Allow-Headers.
Untuk menyelesaikan isu ini, pembangun menambah pengepala berikut pada permintaan:
"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"
Walau bagaimanapun , ini mengakibatkan ralat baharu yang menyatakan bahawa pengepala "Access-Control-Allow-Origin" tidak dibenarkan oleh pengepala "Access-Control-Allow-Headers".
Penyelesaian: Pengepalaan Sekatan dan Jenis Kandungan Lalai
Untuk permintaan silang asal, penyemak imbas akan menghantar permintaan OPTIONS prapenerbangan jika jenis kandungan tidak ditetapkan kepada salah satu daripada tiga jenis tertentu: "application/x-www-form-urlencoded" , "multipart/form-data", atau "text/plain".
Secara lalai, Angular menetapkan jenis kandungan kepada "application/json", yang bukan salah satu jenis yang boleh diterima untuk permintaan silang asal . Ini mencetuskan permintaan OPTIONS prapenerbangan, yang kemudiannya ditolak kerana sekatan pada pengepala "Access-Control-Allow-Headers".
Untuk menyelesaikan isu ini, pembangun boleh menulis ganti jenis kandungan lalai dalam Angular atau benarkan pengepala "Access-Control-Allow-Headers" di sebelah pelayan.
Sampel sudut yang menimpa pengepala lalai:
$http.post(url, data, { headers : { 'Content-Type' : 'application/x-www-form-urlencoded; charset=UTF-8' } });
Atas ialah kandungan terperinci Mengapakah pengepala \'Access-Control-Allow-Origin\' saya tidak dibenarkan dalam \'Access-Control-Allow-Headers\' apabila menghantar fail dengan permintaan POST dalam Angular?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!