¿Cómo envío spring csrf token desde Postman rest client?


Tengo protección csrf en spring framework. Así que en cada solicitud envío token csrf en encabezado desde llamada ajax, que está funcionando perfectamente.

<meta name="_csrf" content="${_csrf.token}"/>
<meta name="_csrf_header" content="${_csrf.headerName}"/>

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

En ajax

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

No tengo idea de generar token csrf e incluir en la sección de encabezado del cliente Postman Rest ? ¿Podría ayudarme a enviar el token csrf del cliente Postman Rest? introduzca la descripción de la imagen aquí

Author: Surendra Jnawali, 2014-11-28

6 answers

La forma más fácil de hacer esto consistentemente para que no tenga que obtener el token cada vez:

NOTA: es necesario instalar PostMan Interceptor y activarlo para tener acceso a los navegadores cookies

  1. Crear un nuevo entorno para que las variables de entorno puedan almacenarse

introduzca la descripción de la imagen aquí

  1. Cree un método de inicio de sesión con una prueba para almacenar la cookie XSRF en una variable de entorno, en la pestaña prueba código

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

EDITAR Para cualquier persona que use el postman 5.5.2 o posterior también tendrá que decodificar la cookie, y también han proporcionado formas alternativas de obtener cookies como señala @Sacapuces

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

Ahora tendrá una variable de entorno con xsrf-token en ella.

  1. Guarde su método de inicio de sesión

  2. Cree la nueva publicación que desea crear y en los encabezados agregue su clave XSRF-Token-Header y la variable de entorno en manillar para acceder a él{{}}

introduzca la descripción de la imagen aquí

  1. Ahora, antes de ejecutar su nueva solicitud, asegúrese de ejecutar su inicio de sesión, almacenará la variable de entorno y, luego, cuando ejecute la solicitud real, la agregará automáticamente.
 28
Author: johnny 5,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-02-07 15:03:55

Puedo enviar REST con token csrf siguiendo los pasos a continuación:

  1. El token CSRF generado automáticamente por spring Security cuando inició sesión. Se mostrará en el encabezado de la respuesta.

  2. El token CSRF se puede usar en una solicitud posterior configurando X-CSRF-TOKEN con el token CSRF en el encabezado.

 8
Author: tranceholic,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-02-04 07:47:54

En primer lugar es necesario instalar PostMan Interceptor y activarlo para tener acceso a las cookies del navegador.

  1. Usted tiene que obtener el token CSRF haciendo una solicitud GET: Encabezado: "XSRF-TOKEN "y Valor:"Fetch"

  2. Debe ver el Token en la pestaña cookie y puede copiarlo (Aviso: Puede configurar spring cómo se debe nombrar la cookie. Tal vez su cookie tenga otro nombre que "XSRF-TOKEN". Atención: Usted tiene el eliminar este carácter en blanco en el token de la nueva línea)

  3. Ahora haga su solicitud POST y establezca el encabezado en: Header: "X-XSRF-TOKEN "y El Valor:"Su Token copiado sin espacios en blanco"

 5
Author: Joel Neukom,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-08 14:42:47

Para mí funciona variante con la adición de X-CSRF-TOKEN a las cabeceras. introduzca la descripción de la imagen aquí

 3
Author: DmRomantsov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-10-28 10:57:18

Si no desea configurar variables de entorno, etc. aquí está la solución más rápida

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

 0
Author: user3705478,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-03-13 06:46:30

Por favor ponga X-CSRF-Token como clave y FETCH como el valor en el encabezado GET request y recibirá el token en el encabezado response

 0
Author: Kiran Shinde,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-09-05 09:46:12