REST 服务通过curl 工作,而不是通过应用程序工作

我有一个使用 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;

    }




翻过高山走不出你
浏览 110回答 3
3回答

aluckdog

检查您是否返回 @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();}

森林海

跨源必须包含您的 js 托管服务器地址,例如 Ex - @CrossOrigin(origins="http://localhost:3000) 并将其添加在 @RestController 之后

繁花不似锦

检查你的js代码。如果你看一下你的控制器,它被声明为@PostMapping。确保您的 js 代码调用相同的 POST 方法。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript