Я выхожу на конечность, поскольку я не уверен, что это даже возможно, но я искал создание двух мета-тегов CSRF (заголовок и токен) в файле javascript, который используется через сайт. Однако я не считаю, что это возможно из-за того, как лист тимьяна обрабатывает данные из интерполированных переменных данных.
Я попытался создать элемент метатега HTML со следующим кодом:
var meta = document.createElement("meta");
meta.setAttribute("name", "_csrf");
meta.setAttribute("th:content", "_csrf.token")
Это создает необходимый только токен-токен - с желаемыми значениями. Однако при печати значений для токена он возвращает "_csrf.token", а не фактическое значение csrf. Я верю в это, потому что тимелеаф не обрабатывает интерполяцию значений правильно.
Должны ли эти метатеги быть добавлены в каждый файл html страницы вручную или они могут быть созданы динамически с использованием общего файла javascript?
Спасибо!
Я рекомендую использовать макет: диалект для создания шаблона, к которому все ваши страницы также имеют доступ. Вы можете поместить <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);