ajax向java后台发送请求 后台接收不到Cookie的解决方法
大概的场景是这样的
ajax向后台提交数据,但是我的后台同时需要处理Cookie
然而,我这里后台却收不到,究其原因,原来是路径的问题
如我这里的路进,请求来源页面是Cookie就是在这个页面被创建,并且在浏览器中也可以看到该Cookie已经被创建
http://localhost:8080/LoveBN/useradmin/order?userid=1ajax请求页面是
$.ajax({ url : "../pay/start",根据Cookie的官方文档,默认情况下,只向同一个应用共享Cookie
如以上地址 /LoveBN/useradmin/order 与 /LoveBN/pay/start ,我们配合设置Cookie的共享路径来说明:
设置路径,在java后端是这样设置的(java后端是在Controller为 LoveBN/useradmin/order 里面设置的)
如下代码:
Cookie cookie = new Cookie("allorder",JSON.toJSONString(map.get("list"))); response.addCookie(cookie); cookie.setPath("ssss");
下面我们开始简要的说明一些关于Cookie的路进问题:
1、如果我们设置不设置这个路径
那么默认情况下是同一应用,显然这里不是同一个应用了
2、如果我们设置
cookie.setPath("/");
表示根目录下的应用都共享,这个权限应该是最大的
3、我们如果设置
cookie.setPath("/LoveBN/useradmin/");这个设置显然我们的 pay/start 是不能获得cookie的
4、我们如果设置
cookie.setPath("/LoveBN/pay/start");
这样设置,在我们的pay/start这个controller里面是可以获得我们创建的Cookie的
在我的场景中,我只需要设置上面的第二或第四就可以了
当然我们可以在 进行测试Cookie是否已经正确传入到后台
Cookie[] cookies = request.getCookies(); for(Cookie cookie : cookies){ System.out.println(cookie.getName()+":"+cookie.getValue()); }
爆款云服务器s6 2核4G 低至0.46/天,具体规则查看活动详情