Come posso inviare il token csrf di spring dal client di rest Postman?

Ho una protezione CSRF nella struttura di spring. Quindi in ogni richiesta invio un token csrf nell’intestazione da una chiamata ajax, che funziona perfettamente.

  var token = $("meta[name='_csrf']").attr("content"); var header = $("meta[name='_csrf_header']").attr("content"); 

In ajax

 beforeSend: function(xhr) { xhr.setRequestHeader(header, token), xhr.setRequestHeader("username", "xxxx1"), xhr.setRequestHeader("password", "password") } 

Non ho idea di generare token csrf e includere nella sezione header di Postman Rest Client ? Potresti aiutarmi ad inviare token csrf da Postman Rest Client? inserisci la descrizione dell'immagine qui

Il modo più semplice per farlo in modo coerente in modo da non dover ottenere il token ogni volta:

NOTA: è necessario installare PostMan Interceptor e triggersrlo per accedere ai cookie del browser

  1. Crea un nuovo ambiente in modo che le variabili di ambiente possano essere archiviate

inserisci la descrizione dell'immagine qui

  1. Creare un metodo di accesso con un test per memorizzare il cookie XSRF in una variabile di ambiente, nella scheda di test inserire questo codice

     //Replace XSFR-TOKEN with your cookie name var xsrfCookie = postman.getResponseCookie("XSRF-TOKEN"); postman.setEnvironmentVariable("xsrf-token", xsrfCookie.value); 

EDIT Per chiunque utilizzi il postino 5.5.2 o successivo dovrai anche decodificare il cookie, e hanno anche fornito modi alternativi per ottenere i cookie come @Sacapuces indica

 pm.environment.set("xsrf-token", decodeURIComponent(pm.cookies.get("XSRF-TOKEN"))) 

Ora avremo una variabile d’ambiente con xsrf-token al suo interno.

  1. Salva il tuo metodo di accesso

  2. Crea il nuovo post che desideri creare e nelle intestazioni aggiungi la tua chiave XSRF-Token-Header e la variabile di ambiente nelle barre degli strumenti per accedervi {{}}

inserisci la descrizione dell'immagine qui

  1. Ora prima di eseguire la tua nuova richiesta assicurati di eseguire il tuo login, memorizzerà la variabile d’ambiente, e poi quando eseguirai effettivamente la richiesta la aggiungerà automaticamente.

Sono in grado di inviare REST con token csrf seguendo la procedura seguente:

  1. Il token CSRF generato automaticamente dalla sicurezza di spring al momento dell’accesso. Verrà visualizzato nell’intestazione della risposta.

  2. Il token CSRF può essere utilizzato su richiesta successiva impostando X-CSRF-TOKEN con token CSRF sull’intestazione.

Innanzitutto è necessario installare PostMan Interceptor e triggersrlo per accedere ai cookie del browser.

  1. Devi recuperare il token CSRF facendo una richiesta GET: Intestazione: “XSRF-TOKEN” e Valore: “Recupera”

  2. Dovresti vedere il Token nella scheda cookie e puoi copiarlo (Avviso: puoi configurare a spring come deve essere chiamato il cookie.) Forse il tuo cookie ha un nome diverso da “XSRF-TOKEN”. Attenzione: hai rimosso questo carattere vuoto in il token dalla nuova riga)

  3. Ora crea la tua richiesta POST e imposta l’intestazione su: Intestazione: “X-XSRF-TOKEN” e Valore: “Il tuo token copiato senza spazi vuoti”

Per me funziona la variante con l’aggiunta di X-CSRF-TOKEN alle intestazioni. inserisci la descrizione dell'immagine qui

Se non si desidera configurare le variabili di ambiente ecc., Ecco la soluzione più rapida

https://stackoverflow.com/a/49249850/3705478

Questo non funziona per me.

Sto seguendo i passaggi: Devi recuperare il token CSRF facendo una richiesta GET: Intestazione: “XSRF-TOKEN” e Valore: “Recupera”

Dovresti vedere il Token nella scheda cookie e puoi copiarlo (Avviso: puoi configurare a spring come deve essere chiamato il cookie.) Forse il tuo cookie ha un nome diverso da “XSRF-TOKEN”. Attenzione: hai rimosso questo carattere vuoto in il token dalla nuova riga)

Ora crea la tua richiesta POST e imposta l’intestazione su: Intestazione: “X-XSRF-TOKEN” e Valore: “Il tuo token copiato senza spazi vuoti”

Inserisci il token X-CSRF come chiave e FETCH come valore nell’intestazione della richiesta GET e riceverai il token nell’intestazione della risposta