Rumah >hujung hadapan web >tutorial js >Mengapa Saya Mendapat Ralat 'Tiada Pengepala 'Kawalan-Kawalan-Asal-Asal'' Semasa Mengakses API REST?
Perkongsian Sumber Silang Asal (CORS) ialah mekanisme yang membenarkan permintaan penyemak imbas untuk mengakses sumber daripada asal yang berbeza daripada asal yang meminta. Apabila permintaan dibuat dari asal yang berbeza, penyemak imbas menghantar permintaan OPTIONS prapenerbangan kepada pelayan untuk menyemak sama ada pelayan membenarkan permintaan tersebut.
Dalam kes yang diterangkan dalam soalan, penyemak imbas menghantar OPTIONS prapenerbangan minta kepada API HP ALM REST. Walau bagaimanapun, pelayan tidak bertindak balas dengan pengepala CORS yang diperlukan, menyebabkan ralat "Tiada pengepala 'Access-Control-Allow-Origin' hadir pada sumber yang diminta."
Terdapat beberapa cara untuk menyelesaikan isu ini:
Menggunakan CORS Proksi:
Proksi CORS memajukan permintaan ke pelayan destinasi dan menambahkan pengepala CORS yang diperlukan pada respons. Ini boleh menjadi mudah jika anda tidak mempunyai kawalan ke atas pelayan destinasi.
Mengelakkan Permintaan Prapenerbangan:
Untuk mengelakkan permintaan prapenerbangan, anda boleh memastikan bahawa permintaan itu tidak memerlukan Pengepala Keizinan atau Jenis Kandungan. Ini boleh dicapai dengan menggunakan kaedah pengesahan alternatif atau pengekodan data JSON sebagai parameter pertanyaan.
Menyelesaikan Isu Wildcard:
Ralat "Access-Control-Allow -Pengepala asal mestilah bukan kad bebas" berlaku apabila pelayan menentukan kad bebas ('*') untuk Pengepala Access-Control-Allow-Origin dan bukannya asal khusus klien yang meminta. Untuk menyelesaikannya, konfigurasikan pelayan untuk menetapkan pengepala Access-Control-Allow-Origin kepada asal yang meminta.
Kod JavaScript dalam soalan mempunyai beberapa pengepala yang salah yang sedang mencetuskan permintaan prapenerbangan:
headers.append('Access-Control-Allow-Origin', 'http://localhost:3000'); headers.append('Access-Control-Allow-Credentials', 'true');
Alih keluar pengepala ini kerana ia tidak sepatutnya dihantar dalam permintaan.
Atas ialah kandungan terperinci Mengapa Saya Mendapat Ralat 'Tiada Pengepala 'Kawalan-Kawalan-Asal-Asal'' Semasa Mengakses API REST?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!