java - 可以在 HttpServletResponse.sendRedirect() 中发送隐藏参数吗?

标签 java http spring-boot controller

我有一个带有 Controller 的 Spring Boot API(无状态),该 Controller 接收 POST 请求,提取 POST 请求的参数,通过 GET 将它们发送到我的角度客户端。我的问题是是否可以在 HttpServletResponse.sendRedirect() 中发送隐藏参数?

到目前为止我所拥有的是这个,但我不想在浏览器中显示参数......

@RequestMapping(value = "/return", method = RequestMethod.POST, headers = "Accept=text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8")
    @ResponseBody
    @Transactional
    public void returnData(UriComponentsBuilder uriComponentsBuilder, final HttpServletRequest request,
            final HttpServletResponse response) throws IOException {

        String parameter=request.getParameter("billCode");

        response.sendRedirect("http://localhost:4200/payment?parameterOne="+parameter);
    }

更新:

我不能使用 HttpSession session = request.getSession(false); 然后使用 session.setAttribute("helloWorld", "Hello world") 因为 session

非常感谢!

最佳答案

您可以使用 HTTP 响应 header ,而不是发送 queryString 中的参数。一个例子:

@GetMapping(value="/")
public void init(HttpServletRequest request, HttpServletResponse response) throws IOException {
    String billCode = request.getParameter("billCode");
    response.addHeader("parameterOne", billCode);
    response.sendRedirect("http://localhost:4200/payment");
}

从请求中获取值:

String billCode = request.getHeader("parameterOne");

或者如果您使用 jQuery 从 ajax 获取:

$.ajax({
    url:'/api/v1/payment'
}).done(function (data, textStatus, xhr) { 
    console.log(xhr.getResponseHeader('parameterOne')); 
});

希望这有帮助。

关于java - 可以在 HttpServletResponse.sendRedirect() 中发送隐藏参数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53144044/

相关文章:

java - Hibernate 使用 JoinColumn 保存或更新

java - 更改 xml 节点中的值时出错

java - 从 apache 网站导入库

java - 每个用户可能有多个 session

java - Spring Cloud Gateway 使用谓词检查头授权

java - Spring boot 2 + AWS Beanstalk 设置堆大小

java - 两个线程一个同步方法scjp

java - Hibernate 4.2.20 对象 HashCode 方法导致 NullPointerException

django - 如何获取 Django 响应对象的内容长度?

java - 整合Spring Boot和Reactor-Kafka的KafkaReceiver