Mengapa Tetapan \'mod: \'no-cors\'\' Membuang SyntaxError Semasa Menggunakan fetch?

Mary-Kate Olsen
Lepaskan: 2024-10-26 08:27:03
asal
567 orang telah melayarinya

Why Does Setting 'mode: 'no-cors'' Throw a SyntaxError When Using fetch?

Ralat Semasa Mengakses API dengan Ambil Semasa Menetapkan Mod kepada 'no-cors'

Semasa percubaan untuk menyelesaikan janji pengambilan menggunakan JavaScript, menetapkan mod kepada 'tidak -cors' berdasarkan cadangan sebelumnya mengakibatkan ralat.

Apabila mod ditetapkan kepada 'cors,' ia menghasilkan ralat menyekat dasar CORS. Seperti yang dicadangkan, menukar mod kepada 'no-cors' dengan tujuan untuk melumpuhkan CORS dan mengambil sumber secara legap mengakibatkan ralat yang tidak dijangka:

Uncaught (in promise) SyntaxError: Unexpected end of input for return response.json()
Salin selepas log masuk

Penjelasan

Punca perkara ini ralat terletak pada fungsi:

<code class="javascript">search() {
    return fetch(`${baselink}${summonerEndpoint}${summoner}${apikey}`, {mode: 'no-cors'}).then(response => {
      return response.json()
    }).then(jsonResponse => {
      console.log(jsonResponse);
      if (!jsonResponse.info) {
        return [];
      }
      return jsonResponse.info.items.map(info => ({
        id: info.id,
        accountId: info.accountId,
        name: info.name,
        profileIconId: info.profileIconId,
        revisionDate: info.revisionDate,
        summonerLevel: info.summonerLevel
      }));
    });
  }</code>
Salin selepas log masuk

Menetapkan mod kepada 'no-cors' membayangkan bahawa penyemak imbas harus gagal secara senyap jika ia menghadapi sebarang isu berkaitan CORS. Dalam kes ini, pelayan tidak memberikan kebenaran menggunakan CORS dan permintaan itu gagal secara senyap.

Oleh itu, percubaan seterusnya untuk menghuraikan respons kosong sebagai JSON (menggunakan response.json()) melemparkan SyntaxError, seperti yang ada tiada data untuk dihuraikan.

Penyelesaian

Untuk menyelesaikan isu ini, terdapat dua keperluan utama:

  1. Lumpuhkan Mod 'no-cors': Alih keluar 'mod: 'no-cors'' daripada permintaan pengambilan.
  2. Dayakan CORS pada Pelayan: Pastikan pelayan bertindak balas dengan Access-Control-Allow yang sesuai -Pengepala asal untuk memberikan kebenaran kepada permintaan silang asal.

Dengan mengikuti langkah ini, aplikasi boleh mengambil data dengan jayanya tanpa mengalami sebarang ralat berkaitan CORS.

Atas ialah kandungan terperinci Mengapa Tetapan \'mod: \'no-cors\'\' Membuang SyntaxError Semasa Menggunakan fetch?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!