Maison >interface Web >js tutoriel >Pourquoi `response.json()` lance-t-il la \'Fin inattendue de l'entrée\' dans le mode `no-cors` de Fetch ?

Pourquoi `response.json()` lance-t-il la \'Fin inattendue de l'entrée\' dans le mode `no-cors` de Fetch ?

DDD
DDDoriginal
2024-12-01 19:57:18805parcourir

Why Does `response.json()` Throw

Erreur de fin inattendue d'entrée lors de la gestion de la réponse CORS

Lors de la gestion de la réponse d'un appel de récupération de l'API REST avec le mode sans cors , les développeurs peuvent rencontrer une erreur « SyntaxError : Fin inattendue de la saisie ». Cette erreur se produit au niveau de la ligne réponse.json() et empêche la réponse d'être analysée en tant que JSON.

Cause

Le mode sans cors restreint la disponibilité du données de réponse au navigateur. Dans ce mode, la réponse devient opaque, ce qui signifie que JavaScript frontend ne peut pas accéder à son corps ou à ses en-têtes. Cette limitation est conçue pour empêcher l'accès aux données d'origine croisée et les vulnérabilités de sécurité potentielles.

Solution

Pour résoudre cette erreur, le mode no-cors doit être supprimé du demande. Ce mode ne doit pas être utilisé comme solution de contournement aux problèmes CORS. Au lieu de cela, les solutions suivantes doivent être envisagées :

  • Configurez le serveur pour envoyer l'en-tête de réponse Access-Control-Allow-Origin et gérer les requêtes OPTIONS.
  • Utilisez un proxy CORS pour transférer la requête au serveur et gérer les en-têtes CORS.

Supplémentaire Informations

  • La documentation de l'objet Request explique les effets de l'utilisation du mode no-cors : https://developer.mozilla.org/en-US/docs/Web/API/Request /mode
  • Pour obtenir des conseils sur la gestion des problèmes CORS, reportez-vous à la réponse à l'adresse : https://stackoverflow.com/questions/23619190/no-access-control-allow-origin-header-is-present-on-the-requested-resource-whe

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn