Axios appel de l'api avec GET devenir des OPTIONS
- Je utiliser axios pour l'appel de l'API (en front-end).
J'utilise la méthode "GET" :
import axios from 'axios';
import querystring from 'querystring';
var url = "mydomain.local",
token = "blablabla...blabla";
var configs = {
headers: {
'Authorization': 'Bearer ' + token,
'Agency': 'demo0'
}
};
var testapi = axios.create({
baseURL: 'http://api.' + url
});
testapi.get( '/relativeUrl', configs
).then(function (response) {
console.log(response);
}).catch(function (error) {
console.log(error);
});
J'ai une 405 method not Allowed. La méthode est "OPTIONS", mais j'utilise la méthode ".get()".
405 Method Not Allowed. OPTIONS de la méthode de
Je test appel de l'api du facteur et je reçois 200 OK :
facteur 200 OK capture d'écran
Quelqu'un a une idée ?
- OPTIONS est un pré-vol à la demande qui vérifie si le serveur que vous GET/POST, vous permet d'OBTENIR/POST à tous. C'est probablement un paramètre de configuration sur le serveur c'est le blocage de votre OBTENIR.
- Dans les en-têtes de Réponse, j'ai eu Access-Control-Allow-Origin:"*", et ainsi Permettre:"GET, HEAD, POST, PUT, DELETE" je pense donc que la méthode GET est disponible.
- Peut-être essayer de changer de Access-Control-Allow-Origin:" * " à la véritable origine. Pas tous les navigateurs permettent ACAO="*". Mais qui aurait l'habitude de créer une autre erreur, donc pas sûr que. Je suis désolé, plus d'autres idées.
- Merci pour vos réponses. ACAO="*" travaille pour :
testapi.post( '/login_check', querystring.stringify({ _username: 'adherent0', _password: 'adherent0' })
donc je ne pense pas que ce soit le problème. Je pense que :var configs = { headers: { 'Authorization': 'Bearer ' + token, 'Agency': 'demo0' } };
est le problème, mais je ne sais pas ce que je fais de mal
Vous devez vous connecter pour publier un commentaire.
Comme @Valse dit, méthode des OPTIONS est pré-vol sur les navigateurs modernes quand Contrôlé les demandes de conditions (MDN) :
Dans l'en-tête de réponse j'ai eu
Allow:"GET, HEAD, POST, PUT, DELETE"
.Donc
OPTIONS
méthode n'est pas disponible et que vous devez configurer sur le serveur (Apache).- Je faire le changement sur apache (/etc/apache2/sites-available/000-default.conf) :
En-têtes de la Requête que j'ai :
Origine: "null" est un problème. La cause est :
Après avoir mis mon fichier javascript sur un serveur apache, l'Origine n'était pas nulle, mais j'ai besoin d'ajouter NelmioCorsBundle à mon projet Symfony afin de permettre le contrôle en amont
Ainsi, la manière de résoudre ce
npm install qs
.Alors: