Я попытался отправить некоторые методы post
из моего javascript-файла, но что-то пошло не так, и скрипт не работает. Мой html
файл:Отправить запрос jquery как Postman
<html>
<head>
<script src="https://code.jquery.com/jquery-1.9.1.min.js"></script> <script>
$(document).ready(function() {
var request = $.ajax({
method: "POST",
url: "http://localhost:8081/login",
dataType: "json",
contentType: "application/json; charset=utf-8",
data: { username: "John", password: "Boston" }
})
.done(function(msg) {
alert("Done: " + msg);
})
.fail(function(jqXHR, textStatus) {
alert("Request failed: " + textStatus);
});
});
</script>
</head>
<body>
</body>
</html>
Я использую spring-boot
для сервера и хотите проверить разрешение с помощью JWT. Так что я overided attemptAuthentication
метода из AbstractAuthenticationProcessingFilter
класса:
@Override
public Authentication attemptAuthentication(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse)
throws AuthenticationException, IOException, ServletException {
String contentType = httpServletRequest.getContentType();
String headerPart = httpServletRequest.getHeader("Accept");
String body = httpServletRequest.getReader().lines().collect(Collectors.joining(System.lineSeparator()));
AccountCredentials credentials = new ObjectMapper().readValue(httpServletRequest.getInputStream(),AccountCredentials.class);
UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken(credentials.getUsername(), credentials.getPassword());
return getAuthenticationManager().authenticate(token);
}
если я посылаю запрос от html
файла body
и contentType
пустуют и headerpart
является text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Однако, когда метод запроса отослан из Почтальон - все отлично работает (поэтому contentType
- text/plain;charset=UTF-8
и body
- {"username":"admin","password":"admin"}
), вот моя конфигурация почтмана:
Возможно, что я что-то не понял, но понятия не имею, почему мой запрос jquery не совпадает. Есть ли какие-либо решения для этого?
Вы можете попробовать использовать тип данных запроса Ajax как DATATYPE: «текст» вместо DATATYPE: «JSon» .The типа данных, которые вы ожидали назад от сервер. – Avi
Я пробовал, но это не помогло – littlewombat