0

I am setting cookie server-side, using java code

response.addCookie("test1","test1");

I found this code to retrieve cookie using javascript

(function(){
    var cookies;

    function readCookie(name,c,C,i){
        if(cookies){ alert("all cookies"+cookies); return cookies[name]; }

        c = document.cookie.split('; ');
        cookies = {};

        for(i=c.length-1; i>=0; i--){
           C = c[i].split('=');
           cookies[C[0]] = C[1];
        }
        alert("required cookie"+cookies[name]);
        return cookies[name];
    }

    window.readCookie = readCookie; // or expose it however you want
})();

I am calling this function as

alert(readCookie('test1'));

but every time I get the alert as undefined.. I checked the chrome's cookie file and my cookie is set there as

localhosttest1test1/service/login

Can someone explain why am I getting this error?

4

2 に答える 2

1

コードは機能しているようです (Firefox、Chrome、および MSIE で、JavaScript でいくつかの Cookie を作成してテストしました。たとえば、document.cookie = "test1=bla"「必要な cookiebla」と表示されます)。サーバーから設定した Cookie が としてマークされてHttpOnlyいるため、JavaScript がアクセスできないのではないでしょうか?

于 2013-04-04T11:23:46.040 に答える
1

別のパスに移動するリンクを送信したときに、同様の問題が発生しました。つまり、リンクをクリックしたページは でした/pathOne/somePlaceが、リンクは に移動しました/pathTwo/someOtherPlace。書き込まれた Cookie は でのみ有効でした/pathTwo/*。これを修正するために、次のことを行いました。

Cookie testCookie = new Cookie("test1","test1");
testCookie.setPath (request.getContextPath ());
response.addCookie (testCookie);

それが役立つことを願っています。

于 2013-12-09T21:02:42.643 に答える