cookie设置失败

有个小项目,本地测试一帆风顺,昨天发布到云服务器后就出问题了

Java端设置的Cookie,浏览器访问不到

 

设置cookie代码如下

/**
 * 添加Cookie
 * @param hsp
 * @param n cookie key
 * @param v cookie value
 * @param p 设置区间
 * @param noJs true:禁止js读取 false:默认
 * @param secure
 * @param sameSite
 *      1:Strict 完全禁止第三方 Cookie,跨站点时,任何情况下都不会发送 Cookie。
 *      2:Lax 不发送第三方 Cookie,但是导航到目标网址的 Get 请求除外
 *      3:None 将Lax变为默认设置,前提是必须同时设置Secure属性(Cookie 只能通过 HTTPS 协议发送)
 * @param t 有效时长(单位:s)
 */
public static void setCookieV(HttpServletResponse hsp, String n, String v, String p, boolean noJs, boolean secure, int sameSite, int t) {
    ResponseCookie c = ResponseCookie.from(n, v)
            .httpOnly(noJs)
            .secure(secure)
            // .domain("") // 域名
            .path(p)
            .maxAge(t)
            .sameSite(sameSite == 1 ? "Strict" : (sameSite == 2 ? "Lax" : "None"))
            .build();
    hsp.setHeader(HttpHeaders.SET_COOKIE, c.toString());
}

 

入参:

Utils.setCookieV(hsp, "ID", random, "/", true, true, 3, 3 * 60 * 60);

 

开始一直以为是返回流的问题,或者跨域的问题,但项目所有的cookie都没有涉及到第三方,按理来说不存在跨域问题

经过坚持不懈的翻资料,终于在一篇博客找到了问题所在

果然是个常识问题,我以为 securetrue 时是在http下也传输,把 secure 的值设置成了true

securetrue-仅在https下传输  /  false:在http下也传输

cookie设置失败

 

最终入参 secure 值改为 false,成功

基础还需巩固,特此记录

 

参考文章:HostOnly Cookie和HttpOnly Cookie - 游子日月长 - 博客园 (cnblogs.com)

上一篇:IO复制文件到另一个地方


下一篇:【无标题】ES 在PHP中的语法格式