[Javascript] je déprime impossible d'arriver à faire un requête
Salut-les-khey3
2022-01-20 10:15:21
Le 20 janvier 2022 à 10:10:04 :
Le 20 janvier 2022 à 10:05:18 :
Le 20 janvier 2022 à 10:04:23 :
Le 20 janvier 2022 à 10:03:38 :
Le 20 janvier 2022 à 09:58:45 :
Je pense que c'est lié à ton payload.
Dans ton code python tu l'envoies via payload, les identifiants sont donc envoyés en text/plain
Dans ton code javascript, tu envoies ton payload en json, ce n'est donc pas du text/plain. Il ne faut pas utiliser la méthode stringify dans ton code javascript.
D'accord je vois ducoup y'a pas moyen de le faire en js ?
C'est la même chose que je t'ai dis, t'as juste à ne pas jsonify
Be non clé j'ai poster un deuxième code dans lequel je ne stringify pas et c'est pareil
Je pense qu'il faut mettre aussi {"Content-Type", "text/plain"}
dans ton header
j'ai utilisé ta technique je savais même pas qu'on pouvais copier les requêtes dans différents langage ducoup j'ai directement pu la copier au format node/js et je suis bien en text/plain
J'obtient ça fetch("monurl", {
"headers": {
"accept": "*/*",
"accept-language": "fr-FR,fr;q=0.9,en-US;q=0.8,en;q=0.7",
"content-type": "text/plain;charset=UTF-8",
"sec-fetch-dest": "empty",
"sec-fetch-mode": "no-cors",
"sec-fetch-site": "cross-site",
"sec-gpc": "1"
},
"referrerPolicy": "strict-origin-when-cross-origin",
"body": "[object Object]",
"method": "POST"
});
Mais attend le fait d'envoyer un objet alors que je suis en text/plain c'est pas un peu incohérent ?
NoC0de
2022-01-20 10:15:34
Le 20 janvier 2022 à 10:14:24 :
Le 20 janvier 2022 à 10:10:04 :
Le 20 janvier 2022 à 10:05:18 :
Le 20 janvier 2022 à 10:04:23 :
Le 20 janvier 2022 à 10:03:38 :
Le 20 janvier 2022 à 09:58:45 :
Je pense que c'est lié à ton payload.
Dans ton code python tu l'envoies via payload, les identifiants sont donc envoyés en text/plain
Dans ton code javascript, tu envoies ton payload en json, ce n'est donc pas du text/plain. Il ne faut pas utiliser la méthode stringify dans ton code javascript.
D'accord je vois ducoup y'a pas moyen de le faire en js ?
C'est la même chose que je t'ai dis, t'as juste à ne pas jsonify
Be non clé j'ai poster un deuxième code dans lequel je ne stringify pas et c'est pareil
Je pense qu'il faut mettre aussi {"Content-Type", "text/plain"}
dans ton header
non cest du json envoyé en une string faut bien laisser comme ça
J'ai donné la solution à ton problème.
D'abord identifie les différences entre les deux requêtes (que tu mets en évidence avec un proxy/server de mock capable d'enregistrer les requêtes), et ensuite joues avec postman pour vérifier si tous les headers sont effectivement nécessaires.
Mais ça sert à rien de tâtonner à l'aveugle.
Azerban
2022-01-20 10:16:11
Le 20 janvier 2022 à 10:14:24 :
Le 20 janvier 2022 à 10:10:04 :
Le 20 janvier 2022 à 10:05:18 :
Le 20 janvier 2022 à 10:04:23 :
Le 20 janvier 2022 à 10:03:38 :
Le 20 janvier 2022 à 09:58:45 :
Je pense que c'est lié à ton payload.
Dans ton code python tu l'envoies via payload, les identifiants sont donc envoyés en text/plain
Dans ton code javascript, tu envoies ton payload en json, ce n'est donc pas du text/plain. Il ne faut pas utiliser la méthode stringify dans ton code javascript.
D'accord je vois ducoup y'a pas moyen de le faire en js ?
C'est la même chose que je t'ai dis, t'as juste à ne pas jsonify
Be non clé j'ai poster un deuxième code dans lequel je ne stringify pas et c'est pareil
Je pense qu'il faut mettre aussi {"Content-Type", "text/plain"}
dans ton header
non cest du json envoyé en une string faut bien laisser comme ça
Justement non. Dans son code Python (qui fonctionne) le payload n'est pas envoyé en json mais en plain/text (par défaut). Je pense donc que le problème vient du fait qu'il tente de sérialiser son payload dans son code javascript.
MonPtitLoup
2022-01-20 10:18:11
Le 20 janvier 2022 à 10:15:21 Salut-les-khey3 a écrit :
Le 20 janvier 2022 à 10:10:04 :
Le 20 janvier 2022 à 10:05:18 :
Le 20 janvier 2022 à 10:04:23 :
Le 20 janvier 2022 à 10:03:38 :
Le 20 janvier 2022 à 09:58:45 :
Je pense que c'est lié à ton payload.
Dans ton code python tu l'envoies via payload, les identifiants sont donc envoyés en text/plain
Dans ton code javascript, tu envoies ton payload en json, ce n'est donc pas du text/plain. Il ne faut pas utiliser la méthode stringify dans ton code javascript.
D'accord je vois ducoup y'a pas moyen de le faire en js ?
C'est la même chose que je t'ai dis, t'as juste à ne pas jsonify
Be non clé j'ai poster un deuxième code dans lequel je ne stringify pas et c'est pareil
Je pense qu'il faut mettre aussi {"Content-Type", "text/plain"}
dans ton header
j'ai utilisé ta technique je savais même pas qu'on pouvais copier les requêtes dans différents langage ducoup j'ai directement pu la copier au format node/js et je suis bien en text/plain
J'obtient ça fetch("monurl", {
"headers": {
"accept": "*/*",
"accept-language": "fr-FR,fr;q=0.9,en-US;q=0.8,en;q=0.7",
"content-type": "text/plain;charset=UTF-8",
"sec-fetch-dest": "empty",
"sec-fetch-mode": "no-cors",
"sec-fetch-site": "cross-site",
"sec-gpc": "1"
},
"referrerPolicy": "strict-origin-when-cross-origin",
"body": "[object Object]",
"method": "POST"
});
Mais attend le fait d'envoyer un objet alors que je suis en text/plain c'est pas un peu incohérent ?
Là ce que tu as envoyé dans ton body c'est une chaîne de caractères "[object Object]"
JeanFistelar
2022-01-20 10:18:48
Le 20 janvier 2022 à 10:16:11 :
Le 20 janvier 2022 à 10:14:24 :
Le 20 janvier 2022 à 10:10:04 :
Le 20 janvier 2022 à 10:05:18 :
Le 20 janvier 2022 à 10:04:23 :
Le 20 janvier 2022 à 10:03:38 :
Le 20 janvier 2022 à 09:58:45 :
Je pense que c'est lié à ton payload.
Dans ton code python tu l'envoies via payload, les identifiants sont donc envoyés en text/plain
Dans ton code javascript, tu envoies ton payload en json, ce n'est donc pas du text/plain. Il ne faut pas utiliser la méthode stringify dans ton code javascript.
D'accord je vois ducoup y'a pas moyen de le faire en js ?
C'est la même chose que je t'ai dis, t'as juste à ne pas jsonify
Be non clé j'ai poster un deuxième code dans lequel je ne stringify pas et c'est pareil
Je pense qu'il faut mettre aussi {"Content-Type", "text/plain"}
dans ton header
non cest du json envoyé en une string faut bien laisser comme ça
Justement non. Dans son code Python (qui fonctionne) le payload n'est pas envoyé en json mais en plain/text (par défaut). Je pense donc que le problème vient du fait qu'il tente de sérialiser son payload dans son code javascript.
il envoie un payload qui est un objet donc request s'occupe de le stringify avant de l'envoyer en contenttype json non ?
MonPtitLoup
2022-01-20 10:20:20
L'auteur tu as essayé ma solution avec FormData ?
Salut-les-khey3
2022-01-20 10:20:21
Le 20 janvier 2022 à 10:13:45 :
Le 20 janvier 2022 à 09:44:23 :
Voici mon problème :
Depuis tout à l'heure j'essaie de me connecter à mon serveur web et impossible je reçois systématiquement une erreur 401 alors qu'avec python aucun problème
Voici le code
``fetch("monurl",{
method: "POST",
headers:{"Content-Type": "application/json"},
body: JSON.stringify({"user":"monusername","pass":"monmotdepasse"}),
mode: "no-cors",
redirect: "follow",
})``
En fait mon objectif final est de récupérer des information sur certaines page, et les afficher dynamiquement sur un userform
Les identifiants sont bien correct et quand je check la requête via l'onglet réseau de la console développeur les données sont bien envoyer dans l'onglet "charge utile"
Voici la version python de mon code qui elle fonctionne sans problème, mais ne me permet pas d'avoir un userform dynamique
`import re
import requests
# Identifiants de connexion
payload = {"user":"monUser","pass":"monPass"}
# Authentification O2Switch
requete = requests.post("urlDeConnectionAuServeur",payload)
# Sauvgarde du cookie
cookie = requete.cookies`
j'ai pas lu le rest emais si il te faut les cookies rajoute un "credentials: include" dans les options
Oui effectivement il va me falloir des cookie pour gérer les prochaines requêtes mais en python la requête de connexion renvoie un token + les cookies dont je me sert ensuite pour naviguer sur les page de mon serveur
Donc la ça devrai fonctionner quand même pour cette url
Salut-les-khey3
2022-01-20 10:23:39
Le 20 janvier 2022 à 10:15:34 :
Le 20 janvier 2022 à 10:14:24 :
Le 20 janvier 2022 à 10:10:04 :
Le 20 janvier 2022 à 10:05:18 :
Le 20 janvier 2022 à 10:04:23 :
Le 20 janvier 2022 à 10:03:38 :
Le 20 janvier 2022 à 09:58:45 :
Je pense que c'est lié à ton payload.
Dans ton code python tu l'envoies via payload, les identifiants sont donc envoyés en text/plain
Dans ton code javascript, tu envoies ton payload en json, ce n'est donc pas du text/plain. Il ne faut pas utiliser la méthode stringify dans ton code javascript.
D'accord je vois ducoup y'a pas moyen de le faire en js ?
C'est la même chose que je t'ai dis, t'as juste à ne pas jsonify
Be non clé j'ai poster un deuxième code dans lequel je ne stringify pas et c'est pareil
Je pense qu'il faut mettre aussi {"Content-Type", "text/plain"}
dans ton header
non cest du json envoyé en une string faut bien laisser comme ça
J'ai donné la solution à ton problème.
D'abord identifie les différences entre les deux requêtes (que tu mets en évidence avec un proxy/server de mock capable d'enregistrer les requêtes), et ensuite joues avec postman pour vérifier si tous les headers sont effectivement nécessaires.
Mais ça sert à rien de tâtonner à l'aveugle.
J'ai pas encore tester t'a méthode khey j'y viens
Azerban
2022-01-20 10:24:54
Le 20 janvier 2022 à 10:18:48 :
Le 20 janvier 2022 à 10:16:11 :
Le 20 janvier 2022 à 10:14:24 :
Le 20 janvier 2022 à 10:10:04 :
Le 20 janvier 2022 à 10:05:18 :
Le 20 janvier 2022 à 10:04:23 :
Le 20 janvier 2022 à 10:03:38 :
Le 20 janvier 2022 à 09:58:45 :
Je pense que c'est lié à ton payload.
Dans ton code python tu l'envoies via payload, les identifiants sont donc envoyés en text/plain
Dans ton code javascript, tu envoies ton payload en json, ce n'est donc pas du text/plain. Il ne faut pas utiliser la méthode stringify dans ton code javascript.
D'accord je vois ducoup y'a pas moyen de le faire en js ?
C'est la même chose que je t'ai dis, t'as juste à ne pas jsonify
Be non clé j'ai poster un deuxième code dans lequel je ne stringify pas et c'est pareil
Je pense qu'il faut mettre aussi {"Content-Type", "text/plain"}
dans ton header
non cest du json envoyé en une string faut bien laisser comme ça
Justement non. Dans son code Python (qui fonctionne) le payload n'est pas envoyé en json mais en plain/text (par défaut). Je pense donc que le problème vient du fait qu'il tente de sérialiser son payload dans son code javascript.
il envoie un payload qui est un objet donc request s'occupe de le stringify avant de l'envoyer en contenttype json non ?
Non pas défaut avec la bibliothèque Request, le payload est encodé comme un formulaire (quand on passe un dictionnaire).
Si on ne veut pas l'encoder, on peut passer le payload sous la forme d'une chaîne de caractères avec le module json. Plus d'explications ici : https://fr.python-requests.org/en/latest/user/quickstart.html#requetes-post-avancees
Salut-les-khey3
2022-01-20 10:34:42
Le 20 janvier 2022 à 10:09:50 :
Essaye un truc comme ça
const form = new FormData();
form.append("user", tonuser);
form.append("pass", tonpassword);
fetch("monurl",{
method: "POST",
body: form,
mode: "no-cors",
redirect: "follow",
})
Bon dieu ça à l'aire de marcher
Faut que je récupère la réponse maintenant et que je sauvgarde les cookie
MonPtitLoup
2022-01-20 10:38:18
Le 20 janvier 2022 à 10:34:42 Salut-les-khey3 a écrit :
Le 20 janvier 2022 à 10:09:50 :
Essaye un truc comme ça
const form = new FormData();
form.append("user", tonuser);
form.append("pass", tonpassword);
fetch("monurl",{
method: "POST",
body: form,
mode: "no-cors",
redirect: "follow",
})
Bon dieu ça à l'aire de marcher
Faut que je récupère la réponse maintenant et que je sauvgarde les cookie
Salut-les-khey3
2022-01-20 10:52:06
Bon par contre ça à l'aire de rien renvoyer en fait donc ça marche pas même si le code est 200
Voila le code que j'ai utiliser pour la réponse
user = "monUser"
pass = "monPass"
const form = new FormData();
form.append("user", user );
form.append("pass", pass);
fetch("monUrl",{
method: "POST",
body: form,
mode: "no-cors",
redirect: "follow",
})
.then(response => response.text())
.then(response => console.log(response))
}
JeanFistelar
2022-01-20 10:57:42
Le 20 janvier 2022 à 10:52:06 :
Bon par contre ça à l'aire de rien renvoyer en fait donc ça marche pas même si le code est 200
Voila le code que j'ai utiliser pour la réponse
user = "monUser"
pass = "monPass"
const form = new FormData();
form.append("user", user );
form.append("pass", pass);
fetch("monUrl",{
method: "POST",
body: form,
mode: "no-cors",
redirect: "follow",
})
.then(response => response.text())
.then(response => console.log(response))
}
fetch("monUrl",{
method: "POST",
body: form,
mode: "no-cors",
redirect: "follow",
})
.then(res => {
if (!res.ok) {throw Error(res.statusText)};
return res.text()
})
.then(console.log)
.catch(console.error)
}
C'est mal indenté, mais fais un minimum d'effort sur l'error handling please
Salut-les-khey3
2022-01-20 11:19:31
Bon ducoup j'ai copier la requête exacte lors de ma connexion au serveur, et je me retrouve avec cette requête
fetch("url", {
"headers": {
"accept": "*/*",
"accept-language": "fr-FR,fr;q=0.9,en-US;q=0.8,en;q=0.7",
"content-type": "application/x-www-form-urlencoded",
"sec-fetch-dest": "empty",
"sec-fetch-mode": "cors",
"sec-fetch-site": "same-origin",
"sec-gpc": "1",
"cookie": "cookie",
"Referrer-Policy": "strict-origin-when-cross-origin"
},
"body": "user=monuser&pass=monpass",
"method": "POST",
"mode": "no-cors"
})
Elle fonctionne comme la technique du form data, mais je n'arrive pas à récupérer le contenu de la page
J'ai rajouter
.then(response => response.text())
.then(response => console.log(response))
Je n'ai pas d'erreur mais il y'a bien un message dans ma console mais il est vide
Peut être la manière dont je récupère la réponse n'est pas correct ?
Cisla2027
2022-01-20 11:24:21
Le 20 janvier 2022 à 09:50:59 :
Pourquoi se casser la tête avec des conneries pareil quand tu peux utiliser WordPress ?
Des liens pour des bonnes formations WordPress ?https://image.noelshack.com/fichiers/2017/09/1488540479-laitrisitas.png