源码:
/**
*添加商品进入购物车
*/
@GetMapping("/addToCart")
public String addToCart(@RequestParam("num") Integer num, @RequestParam("skuId") Long skuId, RedirectAttributes redirectAttributes) {
System.out.println("num=" + num+",skuId="+skuId);
CartItemVo cartItemVo = cartService.addToCart(num,skuId);
redirectAttributes.addAttribute("skuId",skuId);
redirectAttributes.addAttribute("num", num);
return "redirect:/addToCartSuccess.html";
}
@GetMapping("/addToCartSuccess.html")
public String addToCartPage(@RequestParam("num") Integer num, @RequestParam("skuId") Long skuId, Model model) {
CartItemVo cartItemVo = cartService.getCartItem(skuId);
cartItemVo.setCount(num);
model.addAttribute("item",cartItemVo);
return "success";
}
错误原因:
本服务为购物车服务,域名为cart.jxxdymall.com,由于第一个请求来自另一个域名为item.jxxdymall.com的服务,而cookie的作用域被我设置为了jxxdymall.com,在方法间进行转发的时候,转发之前的路径是http://item.jxxdymall.com/4.html,转发之后变为http://192.168.56.1:15002/addToCartSuccess.html?skuId=4&num=1,导致了cookie丢失
解决办法:
重定向时使用完整路径
/**
*添加商品进入购物车
*/
@GetMapping("/addToCart")
public String addToCart(@RequestParam("num") Integer num, @RequestParam("skuId") Long skuId, RedirectAttributes redirectAttributes) {
System.out.println("num=" + num+",skuId="+skuId);
CartItemVo cartItemVo = cartService.addToCart(num,skuId);
redirectAttributes.addAttribute("skuId",skuId);
redirectAttributes.addAttribute("num", num);
return "redirect:http://cart.jxxdymall.com/addToCartSuccess.html";
}