Rumah >hujung hadapan web >tutorial js >Mengapa Saya Mendapat Ralat 'Tiada Pengepala 'Kawalan-Kawalan-Asal-Asal'' Semasa Mengakses API REST?

Mengapa Saya Mendapat Ralat 'Tiada Pengepala 'Kawalan-Kawalan-Asal-Asal'' Semasa Mengakses API REST?

DDD
DDDasal
2024-12-31 15:53:10240semak imbas

Why Am I Getting a

Tiada Pengepala 'Access-Control-Allow-Origin' dalam Tindak Balas

Memahami CORS dan Permintaan Preflighted

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."

Menyelesaikan Isu

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.

Membetulkan Kod JavaScript

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!

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