J'ai essayé fetch
l'URL d'un ancien site Web et une erreur s'est produite:
Fetch API cannot load http://xyz.
No 'Access-Control-Allow-Origin' header is present on the requested resource.
Origin 'http://abc' is therefore not allowed access.
If an opaque response serves your needs, set the request's mode to 'no-cors'
to fetch the resource with CORS disabled.
J'ai compris le message et j'ai essayé de faire une requête qui renvoie une réponse opaque:
fetch("http://xyz", {'mode': 'no-cors'})
Ok, ça marche maintenant ... mais je ne peux pas le lire. = \
À quoi sert alors une réponse opaque?
Status code
est toujours0
, comment vérifier si cela a réussi sistatus is never 200
?Les réponses opaques ne sont pas accessibles par JavaScript, mais vous pouvez toujours les mettre en cache avec l' API Cache et y répondre dans le
fetch
gestionnaire d'événements dans un service worker. Ils sont donc utiles pour rendre votre application hors ligne, également pour les ressources que vous ne pouvez pas contrôler (par exemple, les ressources sur un CDN qui ne définit pas les en-têtes CORS).la source
Il existe également une solution pour l'application Node JS. CORS Anywhere est un proxy NodeJS qui ajoute des en-têtes CORS à la requête mandatée.
L'URL du proxy est littéralement extraite du chemin, validée et proxy. La partie protocole de l'URI mandaté est facultative et est définie par défaut sur "http". Si le port 443 est spécifié, le protocole par défaut est "https".
Ce package n'impose aucune restriction sur les méthodes ou en-têtes http, à l'exception des cookies. La demande d'informations d'identification utilisateur n'est pas autorisée. L'application peut être configurée pour exiger un en-tête pour envoyer une demande par proxy, par exemple pour éviter une visite directe depuis le navigateur. https://robwu.nl/cors-anywhere.html
la source
javascript est un peu difficile à obtenir la réponse, je l'ai corrigé en récupérant l'API du backend puis en l'appelant au frontend.
la source