У меня есть API аутентификации на сервере Springboot.Когда я вызываю API из POSTMAN, объект userDetails не является нулевым, и я получаю успех на стороне клиента.Тем не менее, когда я делаю из responseJS, объект userDetails имеет значение null, а сервер возвращает 500 с сообщением msg. Ответ для предварительной проверки не имеет статуса HTTP ok.
Может ли кто-нибудь помочь мне объяснить, почему он успешен в POSTMAN, а не в JavaScript?
Код в ReactJS
var data = {
"password":"password",
"username":"uname"
}
fetch("https://ipaddress:port/module/authenticate", {
method: "POST",
headers: {
"Content-Type": "application/json"
},
body: JSON.stringify(data)
}).then(response => {
...
})
.catch((e) => {
...
})
Код в Springboot
@PostMapping(value = "/module/authenticate ")
@ResponseBody
public ResponseEntity<String> authenticate(@RequestAttribute UserDetails userDetails) throws Exception {
...
}
public class UserDetails {
// The username for the logging in user.
private String username;
// The password for the user.
private String password;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
Обнаружена причина сбоя POST man
Post man не выполняет вызов OPTIONS до API POSTследовательно, это не подведет.Однако вызов fetch сначала проверяет OPTIONS на наличие доступа к cors, и он должен обрабатываться Spring Security.Справка: Почему отправляется запрос OPTIONS и можно ли его отключить?
Обходным путем может быть установка типа содержимого в виде обычного / текстового