c’est simple, je n’arrive pas a utiliser l’api ynh via axios, je n’arrive a passer la première étape /login
pourtant quand je fais la requete avec curl en cli ça fonctionne (depuis une machine distante) https://yunohost.org/#/admin_api_fr
je dois louper qlq dans les headers, ou j’utilise pas la bonne “method”, je sais pas
y’a pas de raison ça devrait fonctionner
je dissèque ça et ça mais je trouve pas
j’ai systematiquement une erreur 405 method not allowed et parfois en plus CORS erreur
Clairement il faut que ce soit une requete “post” … Et je ne suis pas sur pour le “Content-Type” (je connais pas axios, mais avec python requests, je sais qu’il y a deux facon de passer les données post et generalement il y en a qu’une seule qui marche)
avec ces headers ça devrait passer, mais non
en faite soit je ne mets rien comme headers, juste le param password, et le post est envoyé directement, mais j’ai un 403
soi je mets les headers, mais le navigateur envoie un preflight OPTIONS avant le POST, et je me prend un 405 method not allowed
je crois que ynh ne sait pas prendre en charge les preflight OPTIONS, non ?
Désolé, je travaille sur 12000 trucs en parallèle et ça m’ambiance effectivement pas trop … Je connais pas du tout ces histoires de “pre-flight” … Naivement je dirais que c’est un soucis avec ta lib “axios” mais c’est surtout parce que je l’ai jamais utilisé ni entendu parler …
Est-ce que tu arrives à reproduire le problème avec par exemple la librairie requests ?
avec request native du navigateur c’est exactement le mm résultat, le navigateur envoie automatiquement un pre-flight options pour vérifier qu’il peut faire du CORS, requete a quoi le serveur devrait répondre avec un Access-Control-Allow-Headers: Authorization dans ces headers pour que le navigateur autorise le CORS. Sauf que ynh repond un 405 method not allowed, et donc la vraie requete n’est jamais envoyée (bloquée par le navigateur)
ça ne dépend pas de la librairy mais de ynh
var myHeaders = new Headers()
myHeaders.append('Content-Type', 'application/x-www-form-urlencoded')
myHeaders.append('X-Requested-With', 'customscript')
const request = new Request('https://domain.tld/yunohost/api/login', { method: 'POST', body: '{"password": "xxxxxxxxxxxxxxxxxxxxx"}', headers: myHeaders })
fetch(request)
.then(response => {
if (response.status === 200) {
console.log('response', response)
return response.json()
} else {
throw new Error('Something went wrong on api server!')
}
})
.then(response => {
console.debug(response)
// ...
}).catch(error => {
console.error(error)
})