Да, вы можете использовать его с HTML, так как Spring Security
имеет его по умолчанию.Я использовал его с Thymeleaf
для работы на стороне сервера.
По сути, вы можете просто назвать пространство имен thymeleaf в своем HTML-файле следующим образом.
<html lang="en" xmlns:th="http://www.thymeleaf.org">
...
И приложению Spring вы должны импортировать следующие зависимости:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
В файле application.yml
(или application.properties
) следующие конфиги.
spring:
thymeleaf:
enabled: true
prefix: classpath:/static/ # This static directory located in the resource folder of maven directory structure and all the html and its css/js resources go in there.
suffix: .html
cache: false
enable-spring-el-compiler: true
check-template: true
mode: HTML
encoding: UTF-8
Нет, вы можете добавить токен CSRF
на веб-страницу, просто используя два мета-тега в разделе заголовка вашего html.
<meta name="_csrf" th:content="${_csrf.token}">
<meta name="_csrf_headerName" th:content="${_csrf.headerName}">
или, если вы используете <form>
, добавьте это скрытое поле ввода в <form>
,
<input th:name="${_csrf.parameterName}" th:value="${_csrf.token}" type="hidden"/>
If, вы должны определить их в метатег и нужно сделать запрос Ajax, вот фрагмент JQuery;
$.ajax({
url: '/url',
method: 'POST',
data: {"some": "data"},
beforeSend: (jqXHR) => {
jqXHR.setRequestHeader(
$("meta[name='_csrf_headerName']").attr('content'),
$("meta[name='_csrf']").attr('content'));
},
success: (data, textStatus, jqXHR) => {
// if success.
},
error: (jqXHR) => {
// if error.
},
complete: (jqXHR, textStatus) => {
// Anyway completed.
}
});