重定向时写入cookie

public void testSend(HttpServletResponseresponse) {

    try {

        CookieManager manager=new CookieManager();

        manager.setCookiePolicy(CookiePolicy.ACCEPT_ALL);

        CookieHandler.setDefault(manager);

        URL url=new URL("获取cookie的url");

        HttpURLConnection conn= (HttpURLConnection) url.openConnection();

        conn.getHeaderFields();

        CookieStore store= manager.getCookieStore();

        List<HttpCookie> cookies=store.getCookies();

        Cookie token=null;

        for(HttpCookie cookie: cookies){

            if(token== null && "token".equals(cookie.getName())){

                token=  new Cookie(cookie.getName(),cookie.getValue());

                log.info("token:",token);

                token.setHttpOnly(true);

                //token.setDomain(cookie.getDomain());

                token.setDomain("mdp.cpihz.com.cn");

                token.setMaxAge(Integer.parseInt(String.valueOf(cookie.getMaxAge())));

                token.setComment(cookie.getComment());

                token.setPath(cookie.getPath());

                token.setSecure(cookie.getSecure());

                token.setVersion(cookie.getVersion());

            }

}

        manager.getCookieStore().removeAll();

        response.addCookie(token);

        response.sendRedirect("targetUrl");

    } catch (IOExceptione) {

        e.printStackTrace();

    }

}

程序存在几个可能的问题

1、认证程序返回的cookie的Domain必须要和newurl的Domain匹配

2、当前程序的Domain也要和newurl的Domain匹配

也就是说3者的Domain必须是匹配的,因为你返回后的cookie是存在当前response里面的,Redirect到目标地址必须是相同Domain才能获取到你保存的cookie。

3、你向response中添加cookie后,必须要这次响应回客户端,然后客户端再次发起访问,这个cookie才会生效。但Redirect跳转也是需要响应到客户端后然后再跳转的,但我不确定它是否带上了新的cookie。你可以用浏览器的开发人员工具查看一下。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容