【问题标题】:o.s.web.servlet.PageNotFound : Request method 'POST' not supportedos.web.servlet.PageNotFound:不支持请求方法“POST”
【发布时间】:2017-03-31 14:24:49
【问题描述】:

我在部署一个从GitHub下载的项目,一切都搞定了,服务器的主类是:

@SpringBootApplication
@Controller
@EnableDiscoveryClient

    public class AdminUIApplication {

        public static void main(String[] args) {
            SpringApplication.run(AdminUIApplication.class, args);
        }

        @RequestMapping(value = "/fe/**")
        public String redirect() {
            return "forward:/";
        }

    }

输入 URL:http://localhost:8451/fe/login 然后单击 LOGIN IN ,但我总是从后端日志中收到错误:o.s.web.servlet.PageNotFound : Request method 'POST' not supported。 前端信息如下图:front-end information

从Request URL的信息来看:localhost:8451/uaa/oauth/token,实际上是无法访问的,因为token服务是由另外一个服务器提供的,也运行在本机8080端口上,我试过了8080访问服务,结果OK。所以,我认为,这就是这个错误的原因,但我不知道如何纠正它,所以我在这里发布问题来寻求你的帮助。抱歉,我只是提供了有关项目/代码的一般信息,因为我不确定应该发布哪段代码,如果您需要其他信息或代码,请告诉我。

谢谢

【问题讨论】:

    标签: angularjs node.js maven spring-boot gruntjs


    【解决方案1】:

    看起来redirect 方法使用 POST 重定向到 http://localhost:8451/,并且没有控制器可以处理它。你有@RequestMapping(value = "/")的控制器吗?

    【讨论】:

    • 我想是的,但是客户端是通过AngularJS构建的,我对此知之甚少,我很难找到控制器在哪里。请问这种结构的控制器通常在哪里?另外,我的请求是访问8080端口部署的uaa服务器(spring boot应用),你认为请求映射会在uaa应用上配置在*.yml中
    【解决方案2】:

    @W.Zhou 控制器应该在您的服务器代码中,即在 Spring 中,因为显然 Spring Boot 仅为 GET 请求创建了一个默认处理程序。但是,return "forward:/"; 在您的情况下维护 POST 方法。所以如果你想将请求作为 POST 转发,你需要为它创建一个控制器:

    @RequestMapping(value = "/", method = RequestMethod.POST) public String redirect2() { return "viewName"; }

    另一种可能性是您在 Angular 中有一个控制器来处理“/”GET 请求。因此,您也可以尝试在您的 redirect() 方法中返回 "redirect:/" 而不是 "forward:/"

    【讨论】:

      猜你喜欢
      • 2019-05-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-25
      • 2020-10-29
      • 2016-05-02
      相关资源
      最近更新 更多