2012-05-01 2 views
1

Я пытаюсь читать куки с именем, как Pdf, который имеет следующие значенияЧтение Cookie дают странный формат

http://engine.edocbuilder.com/include/fileDownload-aspx?p=xBfpz3UGPkWamLTDILo%2fWbFqh3FomdYuByiTwfB4RXN0sDN6tY%2fDfxJzzfPZblUl5aSBO3v96%2bJ6acwT7L5oi8tyMuGwKshYtGK%2bfhgiSfM%3d&s=4995b496-e735-4a26-9801-253a34ab0481

Но когда я прочитал это печенье я получаю значение в следующем формате, пожалуйста, вы можете сказать мне решение о Это?

s=a4823a90%2D80e6%2D4006%2D909c%2D69d567f2d318&http%3A%2F%2Fengine%2Eedocbuilder%2Ecom%2Finclude%2FfileDownload%2Easpx%3Fp=%2BRj53ETGUI%2FeK7H8yo2Zj%2F6z9Ggmk4VEgmPEtoA2NPDhomzjaYvk2wkh0OZzWt8OtDcATY%2BknqGG8AuxddA6LWccWAfbQgtI0dlVkWevheg%3D

Ниже приводится код для чтения куки:

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); 
    } 
} 

ответ

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 ""; 
} 
0

Куки содержит 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)); 

Вот a working fiddle.

0

Просто используйте родной decodeURIComponent метод, чтобы иметь правильный формат обратно:

return decodeURIComponent(y); 

Live test case.

«Проблема» находится в коде, записывающем файл cookie, он по какой-то причине закодирован.

Смежные вопросы