一尘不染

在Spring Boot中启用HTTP请求POST

spring-boot

我正在使用Spring Boot,这里是Maven依赖项

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

对于网页,我将文件放在src / main / resources / static中。那里有我的html文件,js库(角度,jquery)和css文件。

我正在尝试使用Angular进行HTTP请求POST(我也有运行正常的GET请求),但是我明白了

POST http://localhost:8080/xxxx/12/addEntry 405 (Method Not Allowed)

在响应标题中

HTTP/1.1 405 Method Not Allowed
Server: Apache-Coyote/1.1
X-Application-Context: application
Allow: HEAD, GET
Content-Type: application/json;charset=UTF-8
Transfer-Encoding: chunked
Date: Wed, 09 Jul 2014 13:04:05 GMT

我意识到,在Response中,allow没有POST方法。

控制器中的方法

@RequestMapping(value = "/xxxx/{uid}/addEntry", method = RequestMethod.POST)
@ResponseBody
public String createEntry(@PathVariable String uid, @RequestBody  String form) {
    System.out.println(form);
    return "index.html";
}

阅读 1221

收藏
2020-05-30

共1个答案

一尘不染

有时,尤其是在初始测试期间,默认情况下,Spring的 csrf- 跨站点请求伪造-保护会默认启动并阻止POST请求的发生,一种 临时的
解决方法是禁用 csrf 。这通常是在Web安全配置类中完成的,该类扩展了WebSecurityConfigurerAdapter

@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
            .csrf().disable();
    }
}

注意:这与 Spring Boot 2.0.0.RC1 上的 版本相同 ,如果 不能 永久使用,则最好

2020-05-30