Как отправить токен spring csrf из клиента Postman rest?
У меня есть защита csrf в spring. Поэтому в каждом запросе я посылаю токен 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 из Postman Rest Client?
![enter image description here]()
Ответы
Ответ 1
Самый простой способ сделать это последовательно, чтобы вам не приходилось каждый раз получать токен:
ПРИМЕЧАНИЕ. Вам необходимо установить PostMan Interceptor и активировать его, чтобы иметь доступ к файлам cookie браузеров.
- Создайте новую среду, чтобы сохранить переменные среды.
![введите описание изображения здесь]()
-
Создайте метод входа в систему с тестом для хранения файла cookie XSRF в переменной среды, на вкладке теста разместите этот код
//Replace XSFR-TOKEN with your cookie name
var xsrfCookie = postman.getResponseCookie("XSFR-TOKEN");
postman.setEnvironmentVariable("xsrf-token", xsrfCookie.value);
ИЗМЕНИТЬ Для тех, кто использует новый почтальон, вам также придется декодировать cookie, заменив последнюю строку следующим:
postman.setEnvironmentVariable("xsrf-token", decodeURIComponent(xsrfCookie.value));
Теперь у вас будет переменная varialbe с xsrf-токеном в ней.
-
Сохраните свой метод входа
-
Создайте новое сообщение, которое вы хотите создать, и в заголовках добавьте свой XSRF-токен-заголовок и переменную окружения в столбцах для доступа к ней. {{}}
![введите описание изображения здесь]()
- Теперь перед запуском вашего нового запроса убедитесь, что вы запустили свой логин, он сохранит переменную окружения, а затем, когда вы запустите фактический запрос, он автоматически добавит его.
Ответ 2
Я могу отправить REST с помощью токена csrf, выполнив следующие шаги:
-
Тонер CSRF, автоматически созданный с помощью spring безопасности при входе в систему. Он будет показан в заголовке ответа.
-
Маркер CSRF может использоваться при последующем запросе, устанавливая X-CSRF-TOKEN с токеном CSRF в заголовке.
Ответ 3
Для меня работает вариант с добавлением X-CSRF-TOKEN в заголовки.
![введите описание изображения здесь]()
Ответ 4
Во-первых, вам нужно установить PostMan Interceptor и активировать его, чтобы иметь доступ к куки файлам браузеров.
-
Вы должны получить токен CSRF, выполнив запрос GET:
Заголовок: "XSRF-TOKEN" и значение: "Fetch"
-
Вы должны увидеть токен на вкладке cookie и можете его скопировать (обратите внимание: вы можете настроить spring как имя файла cookie должно быть названо. Возможно, ваш файл cookie имеет другое имя, чем "XSRF-TOKEN". Внимание: У вас есть удаление этого пустого char в токене из новой строки)
-
Теперь сделайте свой запрос POST и настройте заголовок: Заголовок: "X-XSRF-TOKEN" и значение: "Ваш скопированный токен без пробелов"