1

次の値を持つPdfという名前のCookieを読み込もうとしています

http://engine.edocbuilder.com/include/fileDownload-aspx?p=xBfpz3UGPkWamLTDILo%2fWbFqh3FomdYuByiTwfB4RXN0sDN6tY%2fDfxJzzfPZblUl5aSBO3v96%2bJ6acwT7L5oi8tyMu

しかし、私がこのクッキーを読んだとき、私は次の形式で価値を得ます、それについての解決策を教えてください。

S = a4823a90%2D80e6%2D4006%2D909c%2D69d567f2d318&HTTP%3A%2F%2Fengine%2Eedocbuilder%2Ecom%2Finclude%2FfileDownload%2Easpx%3FP =%2BRj53ETGUI%2FeK7H8yo2Zj%2F6z9Ggmk4VEgmPEtoA2NPDhomzjaYvk2wkh0OZzWt8OtDcATY%2BknqGG8AuxddA6LWccWAfbQgtI0dlVkWevheg%3D

以下は、Cookieを読み取るためのコードです。

var i,x,y,ARRcookies=document.cookie.split(";");
for (i=0;i<ARRcookies.length;i++)
{
     x=ARRcookies[i].substr(0,ARRcookies[i].indexOf("="));
     y=ARRcookies[i].substr(ARRcookies[i].indexOf("=")+1);
     x=x.replace(/^\s+|\s+$/g,"");
     if (x==c_name)
     {
         return unescape(y);
     }
 }
4

3 に答える 3

1

Cookieの読み取りと書き込みを行うには、次の関数を使用します。

function setCookie(c_name, value, expiredays) {
    var exdate = new Date();
    exdate.setDate(exdate.getDate() + expiredays);
    document.cookie = c_name + "=" + escape(value) + ((expiredays == null) ? "" : ";expires=" + exdate.toGMTString() + "; path=/");
}
function getCookie(c_name) {
    if (document.cookie.length > 0) {
        c_start = document.cookie.indexOf(c_name + "=");
        if (c_start != -1) {
            c_start = c_start + c_name.length + 1;
            c_end = document.cookie.indexOf(";", c_start);
            if (c_end == -1) 
                c_end = document.cookie.length;
            return unescape(document.cookie.substring(c_start, c_end));
        }
    }
    return "";
}
于 2012-05-01T12:07:39.607 に答える
0

Cookieには、URLエンコードされたデータが含まれています。unescape文字列をデコードするために使用します。

var cookie = "s=a4823a90%2D80e6%2D4006%2D909c%2D69d567f2d318&http%3A%2F%2Fengine%2Eedocbuilder%2Ecom%2Finclude%2FfileDownload%2Easpx%3Fp=%2BRj53ETGUI%2FeK7H8yo2Zj%2F6z9Ggmk4VEgmPEtoA2NPDhomzjaYvk2wkh0OZzWt8OtDcATY%2BknqGG8AuxddA6LWccWAfbQgtI0dlVkWevheg%3D"
// Find starting position of "http" and retrieve the URL from there
var unEscapedURL = unescape(cookie.substring(cookie.indexOf("http"), cookie.length));

これが実用的なフィドルです。

于 2012-05-01T12:03:12.523 に答える
0

ネイティブdecodeURIComponentメソッドを使用して、適切なフォーマットを元に戻します。

return decodeURIComponent(y);

ライブテストケース

「問題」は、Cookieを書き込むコードにあり、何らかの理由でエンコードされて書き込まれます。

于 2012-05-01T12:03:43.183 に答える