Rumah  >  Artikel  >  Operasi dan penyelenggaraan  >  Ralat permintaan merentas domain konfigurasi Nginx Access-Control-Allow-Origin * Bagaimana untuk menyelesaikannya

Ralat permintaan merentas domain konfigurasi Nginx Access-Control-Allow-Origin * Bagaimana untuk menyelesaikannya

WBOY
WBOYke hadapan
2023-05-11 23:10:125679semak imbas

Kata Pengantar

Apabila ralat 403 merentas domain berlaku no 'access-control-allow-origin' header is present on the requested resource, anda perlu mengkonfigurasi parameter pengepala respons untuk pelayan nginx:

1. Penyelesaian Penyelesaian

Anda hanya perlu mengkonfigurasi parameter berikut dalam fail konfigurasi nginx:

location / { 
 add_header access-control-allow-origin *;
 add_header access-control-allow-methods 'get, post, options';
 add_header access-control-allow-headers 'dnt,x-mx-reqtoken,keep-alive,user-agent,x-requested-with,if-modified-since,cache-control,content-type,authorization';

 if ($request_method = 'options') {
  return 204;
 }
}

Kod konfigurasi di atas boleh menyelesaikan masalah ini. t nak kaji secara mendalam, lihat sahaja di sini Okay=-=

Penjelasan

1. allow-ogin

Pelayan tidak dibenarkan merentas domain secara lalai. Selepas mengkonfigurasi `access-control-allow-origin *` untuk pelayan nginx, ini bermakna pelayan boleh menerima semua sumber permintaan (asal), iaitu, ia menerima semua permintaan merentas domain.

2. access-control-allow-header adalah untuk mengelakkan ralat berikut:

meminta jenis kandungan medan pengepala ialah tidak dibenarkan oleh access-control-allow-header dalam respons pra-penerbangan.

Ralat ini menunjukkan bahawa nilai jenis kandungan yang diminta semasa tidak disokong. Malah, ia disebabkan oleh kami memulakan permintaan jenis "application/json". Ini melibatkan konsep: permintaan sebelum penerbangan Sila lihat pengenalan "permintaan sebelum penerbangan" di bawah.

3. access-control-allow-methods adalah untuk mengelakkan ralat berikut:

jenis kandungan tidak dibenarkan oleh kawalan akses -allow-header dalam respons prapenerbangan.

4 Tambah 204 kembali ke pilihan untuk menangani ralat yang nginx masih menafikan akses semasa menghantar permintaan pos

Apabila menghantar "permintaan preflight", pilihan kaedah perlu digunakan, jadi pelayan perlu membenarkan kaedah ini.

3. Permintaan prapenerbangan

Malah, konfigurasi di atas melibatkan standard w3c: cros, nama penuh ialah perkongsian sumber merentas domain (silang - perkongsian sumber asal), yang dicadangkan untuk menyelesaikan permintaan merentas domain.

Piawaian perkongsian sumber silang asal (cors) menambah set medan pengepala http baharu yang membolehkan pelayan mengisytiharkan tapak asal mana yang mempunyai kebenaran untuk mengakses sumber mana. Di samping itu, spesifikasi memerlukan bahawa bagi kaedah permintaan http yang mungkin mempunyai kesan sampingan pada data pelayan (terutamanya permintaan http selain daripada mendapatkan, atau menghantar permintaan dengan jenis mime tertentu), penyemak imbas mesti terlebih dahulu menggunakan kaedah pilihan untuk memulakan permintaan pra-penerbangan ( permintaan pra-penerbangan) untuk mengetahui sama ada pelayan membenarkan permintaan merentas domain. Selepas pelayan mengesahkan kebenaran, ia memulakan permintaan http sebenar. Dalam pengembalian permintaan prapenerbangan, pelayan juga boleh memberitahu pelanggan sama ada ia perlu membawa bukti kelayakan identiti (termasuk kuki dan data berkaitan pengesahan http).

Malah, permintaan yang medan jenis kandungannya ialah aplikasi/json ialah permintaan siaran dengan jenis mime tertentu yang dinyatakan di atas menetapkan bahawa jenis kandungan tidak tergolong dalam jenis mime berikut. , semuanya tergolong dalam permintaan prapenerbangan:

application/x-www-form-urlencoded
multipart/form-data
text/plain

Jadi permintaan aplikasi/json akan menambahkan permintaan "preflight" sebelum komunikasi formal ini akan membawa header information access-control-request-headers: content-type:

options /api/test http/1.1
origin: http://foo.example
access-control-request-method: post
access-control-request-headers: content-type
... 省略了一些

Apabila pelayan. membalas, jika maklumat pengepala yang dikembalikan tidak mengandungi access-control-allow-headers: content-type, ini bermakna jenis kandungan bukan lalai tidak diterima. Ralat berikut berlaku:

jenis kandungan medan pengepala permintaan tidak dibenarkan oleh kawalan akses-benarkan-pengepala dalam respons pra-penerbangan.

Atas ialah kandungan terperinci Ralat permintaan merentas domain konfigurasi Nginx Access-Control-Allow-Origin * Bagaimana untuk menyelesaikannya. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam