Невозможно получить доступ к cookie в HttpRequest - PullRequest
2 голосов
/ 13 августа 2010

Я пытаюсь получить страницу и передать список идентификаторов, которые хранятся в моем файле cookie.Я предполагал, что можно будет получить cookie со списком из моего запроса.Тем не менее, я не получаю куки на стороне сервера, как я ожидал.Я получаю только «пользовательский» файл cookie, но он не содержит мою информацию.

Я хочу попытаться избежать передачи этих значений в URL, так как я стараюсь сохранить как можно более чистые и красивые URL.Однако, если это невозможно каким-либо другим способом, тогда я все еще могу это сделать.

Добавление файла cookie:

function setCookie(name, value) {
    var today = new Date();
    today.setTime(today.getTime());
    var expires = 30 * 1000 * 60;

    var c_name = name; 
    var exdate = new Date(today.getTime() + (expires));
    document.cookie = c_name + "=" + value + ";expires=" + exdate.toGMTString();
}

Получение новой страницы в jQuery:

document.location.href = href;

В моем методе действий:

if (Request.Cookies != null)
{
    var myCookie = Request.Cookies[cookieName];
}
//myCookie is always null

Следуетя добавляю файл cookie, который по-прежнему доступен в запросе?

Редактировать:

Когда я сейчас использую FireBug и FireCookie, я вижу, что файл cookie не передается с запросом,Таким образом, вопрос, если я делаю что-то не так при добавлении куки?

Ответы [ 2 ]

1 голос
/ 16 августа 2010

Причина, по которой я не смог получить доступ к cookie, была из-за пути к cookie. Когда я просматривал FireCookie, путь был единственным, что не совпадало с файлом cookie, который был доступен в запросе.

То, что было доступно, выглядело так:

Path: "/"

и тот, к которому я хотел получить доступ, но не смог, выглядел так:

Path: "/{projectName}/{controller}/{action}"

Поэтому, когда я сейчас сохраняю свое печенье, я изменил его следующим образом:

document.cookie = c_name + "=" + value + ";expires=" + exdate.toGMTString();

Вместо этого:

document.cookie = c_name + "=" + value + ";Path=/;expires=" + exdate.toGMTString();

И тогда все отлично работает.

0 голосов
/ 13 августа 2010

Хммм.как насчет создания куки на стороне сервера путем вызова обработчика?

// on CookieHandler.ashx
HttpCookie myCookie = new HttpCookie("Your Data");
Response.Cookies.Add(myCookie);

и в своем методе javascript вы можете вызывать обработчик cookie с помощью объекта XmlHttpRequest или вызова JSON.

         function setCookie(name, value){
         var cookieQuery= 'AppCode/cookieHandler.ashx?name='+name+'&value='+value;
             var xmlhttp;
             if (window.XMLHttpRequest) {
             // code for IE7+, Firefox, Chrome, Opera, Safari
                xmlhttp = new XMLHttpRequest();
             }
             else
             if (window.ActiveXObject) {
             // code for IE6, IE5
                xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
             }
             else {
                alert("Your browser does not support XMLHTTP!");
             }
             xmlhttp.onreadystatechange = function() {
                if (xmlhttp.readyState == 4) {
                   // Do Something
                   //alert(xmlhttp.responseText);
                }
             }

             xmlhttp.open("GET", cookieQuery, true);
             xmlhttp.send(null); // Sends the request to the server.

          }  

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...