已经可以测试通过了
今天又试了试, 是我错了, 原因是我把cookie添加到了 http://127.0.0.1:8080域名下,这样就会报Missing cookie 'xxx' for method parameter of type String
因为ajax的url写的是http://localhost:8080, 这样自然读不到127.0.0.1:8080下的cookie,
请注意localhost和127.0.0.1是两个域, 一定要确保一致
讲师是对的, A发ajax请求给B, 带着的是B的cookie, 还是受限于同源策略, ajax的Request URL是B, cookie就是B的
public void setCookie(HttpServletRequest request, HttpServletResponse response, String key,String value) { Cookie cookie = new Cookie(key, value);// 创建一个cookie,cookie的名字是key cookie.setDomain(request.getServerName()); cookie.setPath(request.getContextPath()); // 设置Cookie的有效期 cookie.setMaxAge(Constants.cookieMaxAge); // cookie.setHttpOnly(true); // 将cookie对象添加到response对象中,这样服务器在输出response对象中的内容时就会把cookie也输出到客户端浏览器 response.addCookie(cookie); }
在你服务器的filter里加一个这个方法
我的理解是 对浏览器来说的 如果同意跨域cookie 则浏览器会带上浏览器里的被调用域名下的cookie内容,后面的隐藏跨域 因为对浏览器来说是本域的所以要在当前域名下的cookie