生产中的Spring Boot控制器中的“缺少请求标头”异常不在本地服务器上

时间:2019-04-02 10:38:02

标签: java spring-boot

我在Production env上遇到错误,但是应用程序在本地系统上运行。

"timestamp":"2019-04-02T10:10:26.362+0000","status":400,"error":"Bad Request","message":"Missing request header " on......

我正在从浏览器的Request标头下面传递

LIB_AUTH_TOKEN: admin@gmail.com:admin



 @RestController
    public class HelloController {
    @RequestMapping(value = "/login")
    public String hello(@RequestHeader(value="LIB_AUTH_TOKEN") String token){

    System.out.println(token);
        }
    }

3 个答案:

答案 0 :(得分:0)

在您的请求中包含HttpServletResponse。这将在运行时设置标题。 例如:

@RequestMapping(value = "/login")
    public String hello(@RequestHeader(value="LIB_AUTH_TOKEN") String token, HttpServletResponse aResponse)

答案 1 :(得分:0)

执行中:

curl -i -H "LIB_AUTH_TOKEN: test123" -X GET http://localhost:8080/login

此处与POST和GET配合良好,只需添加一个响应即可:

import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {


    @RequestMapping(value = "/login")
    public String hello(@RequestHeader(value="LIB_AUTH_TOKEN") String token){

        System.out.println(token);

        return "hi";
    }
}

更新

指定HTTP方法:

import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {

    @RequestMapping(value = "/login", method = RequestMethod.POST)
    public String hello(@RequestHeader(value="LIB_AUTH_TOKEN") String token){

        System.out.println(token);

        return "hi";
    }
}

答案 2 :(得分:0)

我遇到了类似的问题,但就我而言,我希望它是可选的。问题是 @RequestHeader 的 require 属性默认为 true(我假设默认为 false)

希望这能节省一些人的时间!