【问题标题】:Get cookies set by Java in Javascript在 Javascript 中获取 Java 设置的 cookie
【发布时间】:2015-08-06 17:28:48
【问题描述】:

我正在尝试使用 java 设置 cookie,如 here 所示。

我想在 javascript 中使用这个 cookie(由于一些限制需要像这样使用它)。但我看不到任何 cookie 集(为此我使用的是web developer addon firefox)。

有没有办法做到这一点?这种 cookie 使用是否可能?

Java 代码:

try {
            // instantiate CookieManager
            CookieManager manager = new CookieManager();
            CookieHandler.setDefault(manager);
            CookieStore cookieJar =  manager.getCookieStore();

            // create cookie
            HttpCookie cookie = new HttpCookie("UserName", str);

            // add cookie to CookieStore for a
            // particular URL
            URL url = new URL("http://host.example.com");
            cookieJar.add(url.toURI(), cookie);
            System.out.println("Added cookie using cookie handler");
        } catch(Exception e) {
            System.out.println("Unable to set cookie using CookieHandler");
            e.printStackTrace();
        }

Javascript:

function Cookie(cname){
    alert("in getcookie function");
    var name = cname + "=";
    var ca = document.cookie.split(';');

    for(var i=0; i<ca.length; i++) {
        var c = ca[i];
        while (c.charAt(0)==' ') c = c.substring(1);
        if (c.indexOf(name) == 0) 
            document.getElementById("result").innerHTML=c.substring(name.length,c.length);
    }
    console.log(document.cookie);
    //document.getElementById("result").innerHTML="somewhere something went wrong!";
}
</script>

<div id="result">
    <p onclick="Cookie('JSESSIONID')">Click me</p>
</div>

console.log 没有显示任何输出。

【问题讨论】:

  • 您能提供您正在使用的relevant code 吗?
  • 如果您在呈现的文档中使用console.log(document.cookie),它会显示什么?
  • 空输出。 @MichaelDibbets
  • 好的,这意味着您的 cookie 未设置,或者您在设置 cookie 之前发送了标头。顺便说一句,您可能希望为您的 cookie 使用这个更简单的代码 :-) jsfiddle.net/mdibbets/jfpu45nx/1 它会将它们作为对象返回。请在页面生成的早期检查您调用 cookie 代码的代码路径。在您向浏览器输出的那一刻,cookie 需要已经设置好了。
  • 这里我通过 onclick 调用该函数,这也是在看到 java 代码的输出“cookie created”之后。我使用了你的代码,对象中的字符串是“未定义的”。这意味着什么?

标签: javascript java cookies


【解决方案1】:

你可以试试这个:

    import javax.servlet.http.Cookie;
    import javax.servlet.http.HttpServletResponse;

    Cookie cookie = new Cookie("uniqueFileId" + uniqueFileId, uniqueFileId);
    cookie.setMaxAge(60 * 10);
    cookie.setPath("/");
    cookie.setSecure(false);
    response.addCookie(cookie);

【讨论】:

  • 我的代码中没有 servlet 响应。它是 Java 代码而不是 Servlet。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-12-21
  • 1970-01-01
  • 1970-01-01
  • 2013-01-28
  • 1970-01-01
  • 2017-09-05
相关资源
最近更新 更多