lucky2727 2022-11-17 11:25 采纳率: 66.7%
浏览 15
已结题

服务器写入cookie线上失败

试过换域名什么的,本地测试可以正常获取,线上获取不到,本地一切正常
try {
            if (cookieValue == null) {
                cookieValue = "";
            } else if (isEncode) {
                cookieValue = URLEncoder.encode(cookieValue, "utf-8");
            }
            Cookie cookie = new Cookie(cookieName, cookieValue);
            if (cookieMaxage > 0)
                cookie.setMaxAge(cookieMaxage);
            if (null != request) {// 设置域名的cookie

                String domainName = getDomainName(request);
                //logger.info("========== domainName: {} ==========", domainName);
                if (!"localhost".equals(domainName)) {
                    cookie.setDomain(domainName);
                    //cookie.setDomain(".unionpay.com");    //测试此地址  写死
                    logger.info("========== domainName: {} ==========", domainName);
                }
            }
            cookie.setPath("/");
            response.addCookie(cookie);
        } catch (Exception e) {
            e.printStackTrace();
        }

​


private static final String getDomainName(HttpServletRequest request) {
String domainName = null;

    String serverName = request.getRequestURL().toString();
    if (serverName == null || serverName.equals("")) {
        domainName = "";
    } else {
        //serverName = serverName.toLowerCase();
        serverName = serverName.toLowerCase(Locale.ENGLISH);    //测试
        serverName = serverName.substring(7);
        final int end = serverName.indexOf("/");
        serverName = serverName.substring(0, end);
        if (serverName.indexOf(":") > 0) {
            String[] ary = serverName.split("\\:");
            serverName = ary[0];
        }

        final String[] domains = serverName.split("\\.");
        int len = domains.length;
        if (len > 3 && !isIp(serverName)) {
            // www.xxx.com.cn
            domainName = "." + domains[len - 3] + "." + domains[len - 2] + "." + domains[len - 1];
        } else if (len <= 3 && len > 1) {
            // xxx.com or xxx.cn
            domainName = "." + domains[len - 2] + "." + domains[len - 1];
        } else {
            domainName = serverName;
        }
    }
    return domainName;
}

```

```java

线上怎么才能发送给客户端
  • 写回答

6条回答 默认 最新

  • 普通网友 2022-11-17 11:58
    关注

    cookie 一般的话,你只要写入到请求中了,那么就会返回给客户端;
    如果写入cookie不成功之类的,看看你运行服务器的用户,有没有写入服务器的权限。
    这样即可解决。

    如果不能解决,欢迎来交流。

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 11月24日
  • 创建了问题 11月17日