[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 :ok:

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

:fete:

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))

}

Salut-les-khey3
2022-01-20 10:56:14

Le 20 janvier 2022 à 10:34:25 :
Il y a cette réponse sur stack : https://stackoverflow.com/questions/35325370/how-do-i-post-a-x-www-form-urlencoded-request-using-fetch#answer-53189376

Ça me renvoie une 401 pareil

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

NoC0de
2022-01-20 11:10:21

Le 20 janvier 2022 à 10:56:14 :

Le 20 janvier 2022 à 10:34:25 :
Il y a cette réponse sur stack : https://stackoverflow.com/questions/35325370/how-do-i-post-a-x-www-form-urlencoded-request-using-fetch#answer-53189376

Ça me renvoie une 401 pareil

T'as analysé les request reçues ou non ?
Si tu le fais pas tu peux galérer la journée.

Là en comparant les deux requests t'aurais déjà terminé :(

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 ?

Salut-les-khey3
2022-01-20 11:21:36

Le 20 janvier 2022 à 11:10:21 :

Le 20 janvier 2022 à 10:56:14 :

Le 20 janvier 2022 à 10:34:25 :
Il y a cette réponse sur stack : https://stackoverflow.com/questions/35325370/how-do-i-post-a-x-www-form-urlencoded-request-using-fetch#answer-53189376

Ça me renvoie une 401 pareil

T'as analysé les request reçues ou non ?
Si tu le fais pas tu peux galérer la journée.

Là en comparant les deux requests t'aurais déjà terminé :(

Je connais pas docker khey c'est pas la peine je vais juste rajouter une couche de complexité et de problème pour pas grand chose, je sens que je suis pas loin faut juste que j'arrive à récupérer cette réponse

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

Sheitounet
2022-01-20 11:26:12

Axios khey

Infos
Gestion du forum

contact@geevey.com

API disponible. Utilisez le paramètre "api" en GET, peu importe le contenu, sur une page du site.

Notes

    ⚠️ Les archives de novembre sont désormais disponibles.
Non-assumage
    Personne n'a pas assumé de topic pour le moment.