Axios - Pas de "Access-Control-Allow-Origin' en-tête est présent
Il me manque quelque chose ici. J'ai eu du mal à obtenir de l'appel d'API pour travailler.
Puis-je partager l'url comme ci-dessous et il fonctionne littéralement à la fois. Après que cela ne fonctionne de nouveau. Je jure que je n'ai pas changer quelque chose.
Comment faire vous allez à ce sujet dans AXIOS?
Message d'erreur est:
XMLHttpRequest ne peut pas charger
http://magicseaweed.com/api/W2Z26fXscpELi7nPB0svfqcGj9FtGO9e/forecast/?spot_id=228.
Pas de "Access-Control-Allow-Origin' en-tête est présent sur le demandé
de la ressource. Origine " http://localhost:8080 ' est donc pas permis
d'accès.
import axios from 'axios';
const ROOT_URL = `magicseaweed.com/api/W2Z26fXscpELi7nPB0svfqcGj9FtGO9e/forecast/`;
export const FETCH_WEATHER = 'FETCH_WEATHER';
export function fetchWeather() {
const url = `http://${ROOT_URL}?spot_id=228`;
const request = axios.get(url);
return {
type: FETCH_WEATHER,
payload: request
};
}
J'ai essayé avec cette modification OBTENIR aswell, mais en vain
axios({
url: url ,
headers: {"Access-Control-Allow-Origin": "*"},
});
Bon, juste point de. mais en regardant
axios
de la documentation, je faild de voir quelque chose à configurer. Je l'ai fait essayer d'autres options, mais il n'a pas de travail. Je vais la listeC'est quelque chose que le serveur doit être configuré pour le faire. Vous pouvez toujours appeler la magie des algues si vous avez mis en place un projet sur un serveur comme la réponse vous dit.
Je viens d'appeler l'url magicseaweed.com/api/W2Z26fXscpELi7nPB0svfqcGj9FtGO9e/forecast/... et une partie de l'erreur que vous obtenez en raison de la SCRO, le serveur semble que la réponse à une de 500, ce qui indique une erreur inattendue de leur côté. Êtes-vous sûr il n'y a pas de problèmes avec l'API? Il arrive parfois que celui qui implémente l'api du serveur oublie d'ajouter de la SCRO en-tête de la réponse, si il y a une erreur (dans ce cas-500)
Que le changement que vous venez de faire dans votre question ne va pas résoudre quoi que ce soit, cet en-tête est censé être renvoyé dans la réponse du serveur, qui ne sont pas envoyés dans la requête. C'est le serveur de l'api de travail à faire.
OriginalL'auteur morne | 2016-10-12
Vous devez vous connecter pour publier un commentaire.
Regardez ici:
https://www.npmjs.com/package/magicseaweed
Vers le bas cela explique pourquoi de leur API wrapper ne fonctionne pas dans le navigateur. C'est la même raison pour laquelle vous ne pouvez pas faire l'appel Ajax dans le navigateur.
FAQ
Puis-je utiliser ce module dans le navigateur avec browserify?
En théorie oui, mais le Magicseaweed API est actuellement pas l'envoi de l'Access-Control-Allow-Origin-tête dans les requêtes du navigateur (en quelque sorte l'en-tête est envoyée, si vous refaites la demande via cURL).
Donc, si les changements de l'API que le comportement, ce module permettra de travailler avec browserify.
Vous pouvez vous lever de votre propre serveur proxy ou vous pouvez utiliser l'une de celles qui sont libres disponibles sur internet:
https://developer.yahoo.com/yql/
https://crossorigin.me/
Je suis en train de l'appeler moi-même et je peux confirmer que l'API ne retourne pas une Access-Control-Allow-Origin-tête, de sorte qu'il ne va pas au travail avec l'AJAX. Btw, c'est axios, pas browserify 🙂 Edit: désolé viens de voir qu'ils disent la même chose sur leur mnp page, c'est pourquoi vous avez dit browserify 🙂
OriginalL'auteur Robert Moskal