我有这样的功能可以从我的表单中检索数据并将它们发送到 Spring Boot 服务器
function saveDataToStorage(event){
event.preventDefault();
let name = document.getElementById('imie').value;
let email = document.getElementById('email').value;
let phone = document.getElementById('telefon').value;
let topic = document.getElementById('temat').value;
let message = document.getElementById('wiadomosc').value;
let data = {
name: name,
email: email,
phoneNumber: phone,
topic: topic,
text: message
}
fetch('http://localhost:8080/api/endpoint',{
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify(data),
})
.then(response => response.json())
.then(data => {console.log('Success:',data);})
.then(error => {console.log('Error:',error);});
document.getElementById('imie').value = '';
document.getElementById('email').value = '';
document.getElementById('telefon').value = '';
document.getElementById('temat').value = '';
document.getElementById('wiadomosc').value = '';
}
还有 FormData 类
@Data
@AllArgsConstructor
public class FormData {
String name;
String email;
String phoneNumber;
String topic;
String message;
}
POST 端点
@PostMapping("/api/endpoint")
public ResponseEntity<String> receiveData(@RequestBody FormData data){
log.info(data.getName()+" "+data.getEmail()+" "+data.getPhoneNumber()+" "+data.getTopic()+" "+data.getMessage());
return ResponseEntity.ok("data recieved");
}
当我在网站上提交表单数据时,我收到这样的错误
加载资源失败:服务器响应状态为403()
在 Spring 应用程序控制台中我没有任何错误
我已尝试添加对此端点的安全配置授权
http.authorizeHttpRequests(authz->authz .requestMatchers("/api/endpoint").permitAll()
但这并没有改变任何事情
也许缺少跨域请求(CORS)配置?如果没有看到控制器的类级注释,很难判断。
如果是,请尝试在控制器中的类声明上方添加
@CrossOrigin("*")
或 @CrossOrigin(origins = "[origin address]")
注释。注意:生产中不得使用通配符交叉源。