Создание CSRF JS Metatag с Thymeleaf

1

Я выхожу на конечность, поскольку я не уверен, что это даже возможно, но я искал создание двух мета-тегов CSRF (заголовок и токен) в файле javascript, который используется через сайт. Однако я не считаю, что это возможно из-за того, как лист тимьяна обрабатывает данные из интерполированных переменных данных.

Я попытался создать элемент метатега HTML со следующим кодом:

var meta = document.createElement("meta");
meta.setAttribute("name", "_csrf");
meta.setAttribute("th:content", "_csrf.token")

Это создает необходимый только токен-токен - с желаемыми значениями. Однако при печати значений для токена он возвращает "_csrf.token", а не фактическое значение csrf. Я верю в это, потому что тимелеаф не обрабатывает интерполяцию значений правильно.

Должны ли эти метатеги быть добавлены в каждый файл html страницы вручную или они могут быть созданы динамически с использованием общего файла javascript?

Спасибо!

Теги:
csrf
thymeleaf

1 ответ

0

Я рекомендую использовать макет: диалект для создания шаблона, к которому все ваши страницы также имеют доступ. Вы можете поместить <meta/> там и поделиться им между всеми вашими страницами.

Если вы используете JavaScript, вы можете запустить JavaScript через тот же весенний процесс, что и ваши страницы (если у вас все правильно настроено для него). Например, что-то вроде этого:

@GetMapping("/your-javascript-name.js")
public String deposit() {
    return "javscript/your-javascript-name";
}

Таким образом, вы все равно можете включить его извне:

<script src="your-javascript-name.js"></script>

И в javascript вы можете использовать Thymeleaf:

var token = /*[[${_csrf.token}]]*/ '';

var meta = document.createElement("meta");
meta.setAttribute("name", "_csrf");
meta.setAttribute("content", token);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню