代码之家  ›  专栏  ›  技术社区  ›  Mariano L

从其他帖子执行临时\u重定向时添加帖子数据

  •  0
  • Mariano L  · 技术社区  · 8 年前

    我正在开发一个包含购买屏幕的网站。我将使用类似的服务 贝宝 。我只需要将POST数据发送到此服务,该服务将对此负责。

    问题是,我想隐藏一些字段。因此,输入类型隐藏不是选项。所以我添加了一个只包含一个数据的简单表单, 产品ID 然后用添加的数据重定向帖子。

    现在的问题是,这些数据是作为URL参数发送的(我可以在浏览器的URL中看到这些值)。我希望这些值(在示例中为userId和reference)作为POST数据。我怎样才能做到这一点?

    代码:

    @RequestMapping(value = "/doPurchase", method = RequestMethod.POST)
    public ModelAndView doPurchase(Principal principal, HttpServletRequest request,
            @RequestParam(value = "productId", required = true) String productId, RedirectAttributes attributes) {
        //
        Product product = productRepository.findByProductCode(productId);
        //
        // DO STUFF...
        //
        ModelAndView modelAndView = new ModelAndView("redirect:PAYMENT_SERVICE_URL");
    
        attributes.addAttribute("UserId", "USER_ID");
        attributes.addAttribute("Reference", "REF_ID");
        //
        // ETC ETC
    
        //
        request.setAttribute(View.RESPONSE_STATUS_ATTRIBUTE, HttpStatus.TEMPORARY_REDIRECT);
        return modelAndView;
    }
    
    1 回复  |  直到 8 年前
        1
  •  2
  •   Community Mohan Dere    5 年前

    无法通过重定向来执行POST请求 301 / 302 。 307 可以重复POST请求,但不能修改它。

    参考号:

    一些旁路方法:

    1. 使您 PAYMENT_SERVICE_URL 接受GET和POST请求。

    2. 使中间页接受重定向的GET请求,并生成一个HTML POST表单 PAYMENT\u SERVICE\u URL ,并通过JavaScript自动提交表单。

    3. 如果您正在使用 SpringFramework ,考虑使用 Flash Attributes : https://docs.spring.io/spring/docs/current/spring-framework-reference/web.html#mvc-flash-attributes

    4. 如果确实要以常规方式隐藏某些参数,可以将这些值存储在数据库表中,并传递 id 通过GET请求将行的 身份证件 。或者,您可以加密/解密参数。