Как отправить токен spring csrf от клиента Postman rest?

Я защита csrf в рамках весны. Поэтому в каждом запросе я отправляю токен csrf в заголовке из ajax-вызова, который отлично работает.

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

в ajax

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

Я понятия не имею, чтобы создайте токен csrf и включите в раздел заголовка Postman rest Client ? Не могли бы вы помочь мне отправить токен csrf от почтальона Rest Client? enter image description here

6 ответов


самый простой способ сделать это последовательно, чтобы вам не нужно было получать токен каждый раз:

Примечание: вам нужно установить PostMan Interceptor и активировать его, чтобы иметь доступ к cookies браузеров

  1. создайте новую среду, чтобы переменные среды могли храниться

enter image description here

  1. создайте метод входа с тестом для хранения файла cookie XSRF в переменной среды на вкладке тест post этот код

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

редактировать Для тех, кто использует 5.5.2 postman или более поздней версии, вам также придется декодировать cookie, и они также предоставили альтернативные способы получения cookie, как указывает @Sacapuces

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

теперь у вас будет переменная среды с XSRF-токеном в ней.

  1. сохранить метод входа

  2. создать новый пост, который вы хотите создать и в заголовках добавить ваш ключ XSRF-Token-Header и переменная среды в дескрипторах для доступа к нему{{}}

enter image description here

  1. теперь перед запуском нового запроса убедитесь, что вы запустите свой логин, он будет хранить переменную среды, а затем, когда вы запустите фактический запрос, он автоматически добавит его.

Я могу отправить REST с токеном csrf, выполнив следующие шаги:

  1. токен CSRF, автоматически генерируемый spring security при входе в систему. Он будет показан в заголовке ответа.

  2. токен CSRF можно использовать по последующему запросу, установив X-CSRF-токен с токеном CSRF в заголовке.


во-первых, вам нужно установить PostMan Interceptor и активировать его, чтобы иметь доступ к cookies браузеров.

  1. вы должны получить токен CSRF, сделав запрос GET: Заголовок: "XSRF-TOKEN" и значение:"Fetch"

  2. вы должны увидеть маркер на вкладке cookie и можете скопировать его (обратите внимание: вы можете настроить spring, как файл cookie должен быть назван. Возможно, ваш cookie имеет другое имя, чем "XSRF-TOKEN". Внимание: у вас есть удалить этот пробел char в токене из новой строки)

  3. теперь сделать свой POST-запрос и установить заголовок: заголовок: "х-с XSRF-знак" и "значение": "скопированный знак без пробелов"


для меня работает вариант с добавлением X-CSRF-токена в заголовки. enter image description here


Если вы не хотите настраивать переменные среды и т. д. вот самое быстрое решение

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


пожалуйста, поставьте X-CSRF-Token как ключ и FETCH Как значение в заголовке запроса GET, и вы получите токен в заголовке ответа