翻過高山走不出你
2023-10-14 16:44:21
我有一個使用 Spring 構建的小型 Web 應用程序,并且可以從curl 和 postman 訪問 REST 服務。如果我嘗試使用 Web 應用程序上托管的 JavaScript 訪問它們,則會收到 405 錯誤。什么可能導致這種情況?我意識到代碼中存在不安全性,這只是一個倉促的課程項目,所以它們并不重要。如果我復制 JavaScript 代碼并在瀏覽器的控制臺中運行它,它就會起作用。用戶等級import org.springframework.data.annotation.Id;public class User { @Id public String id; private String username; private String firstName; private String lastName; private String password; private int zipCode; private int jacketThreshold; private int coatThreshold; public User() {} public User(String username) { this.username = username; } public User(String firstName, String lastName, String password) { this.firstName = firstName; this.lastName = lastName; this.password = password; } public User(String username, String password, int zipCode) { this.username = username; this.password = password; this.zipCode = zipCode; } public String getId() { return id; } public void setId(String id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getFirstName() { return firstName; } public void setFirstName(String firstName) { this.firstName = firstName; } public String getLastName() { return lastName; } public void setLastName(String lastName) { this.lastName = lastName; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public int getZipCode() { return zipCode; } public void setZipCode(int zipCode) { this.zipCode = zipCode; } public int getJacketThreshold() { return jacketThreshold; } public void setJacketThreshold(int jacketThreshold) { this.jacketThreshold = jacketThreshold; }
3 回答

aluckdog
TA貢獻1847條經驗 獲得超7個贊
檢查您是否返回 @ResponseBody 或 @ResponseStatus
要解決此問題,只需添加 @ResponseBody
@RequestMapping(value="/user", method = RequestMethod.POST)
public @ResponseBody String updateUser(@RequestBody User user){
return userService.updateUser(user).getId();
}
或您的方法的@ResponseStatus。
@RequestMapping(value="/user", method = RequestMethod.POST)
@ResponseStatus(value=HttpStatus.OK)
public String updateUser(@RequestBody User user){
return userService.updateUser(user).getId();
}

森林海
TA貢獻2011條經驗 獲得超2個贊
跨源必須包含您的 js 托管服務器地址,例如 Ex - @CrossOrigin(origins="http://localhost:3000) 并將其添加在 @RestController 之后
添加回答
舉報
0/150
提交
取消