La clé de cette question a été de comprendre où csrfmiddlewaretoken venait. Je pensais qu'il a été construit en quelque sorte à partir de csrftoken. J'ai réalisé qu'il devait être une variable cachée fournie par le serveur.
Le problème est alors devenu de savoir comment extraire la valeur csrfmiddlewaretoken de l'appel get initial à login. Note Postman utilise maintenant Cheerio ayant abandonné jQuery. En utilisant le jetpack postman dans l'appel get, c'est le test que j'ai utilisé pour extraire la valeur d'entrée cachée.
tests["responseCode.code === 200"] = responseCode.code === 200 ;
var csrftoken = postman.getResponseCookie("csrftoken").value ;
tests['csrftoken: ' + csrftoken ] = csrftoken.length > 0 ;
var html ;
html = cheerio(responseBody) ;
inputs = html.find('input') ;
csrfmiddlewaretoken = '' ;
postman.setEnvironmentVariable("csrfmiddlewaretoken", csrfmiddlewaretoken) ;
for(var index = 0 ; index < inputs.length ; index++) {
var input = inputs[index] ;
if (input.attribs.name === 'csrfmiddlewaretoken') {
csrfmiddlewaretoken = input.attribs.value ;
postman.setEnvironmentVariable("csrfmiddlewaretoken", csrfmiddlewaretoken) ;
}
}
tests['csrfmiddlewaretoken: ' + csrfmiddlewaretoken ] = csrfmiddlewaretoken.length > 0 ;
puis dans l'appel de poste pour se connecter réellement.
J'ai dû ajouter un en-tête Referer conformément à la politique de sécurité des sites.
Content-Type:application/x-www-form-urlencoded
Referer:{{referer}}
La forme des valeurs
csrfmiddlewaretoken:{{csrfmiddlewaretoken}}
username:{{username}}
password:{{password}}
next:{{next}}
puis sur l'envoi de l'appel après le script postier connecté avec succès dans
pm.test("Status code is 200", function() {
pm.response.to.have.status(200);
});
:-)
Que voulez-vous atteindre avec construire le jeton csrf en Javascript? – Swapnil
La seule chose qui est différente de ce qui fonctionne et ce qui échoue de ce que je peux voir est de fournir csrfmiddlewaretoken. Utiliser un navigateur et charles csrfmiddlewaretoken est présent dans les appels http. Je cherche à créer csrfmiddlewaretoken à envoyer avec une demande de poste de facteur et, espérons-le, se connecter au système. –
En posant la question, j'ai eu l'idée que le site pourrait le générer ... et c'était le cas! –