"$" долларовый символ с префиксом имен файлов cookie - PullRequest
8 голосов
/ 01 марта 2012

У меня есть эта функция для получения куки-файлов ответа в CookieContainer (this.cookies)

private void getCookies(string url)
{

  // request
  HttpWebRequest request = CreateWebRequestObject(url);
  request.CookieContainer = this.cookies;

  request.Headers.Add("Accept-Encoding", "gzip, deflate");
  request.Headers.Add("Accept-Language", " es-MX,es;q=0.8,en-us;q=0.5,en;q=0.3");
  request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";



  request.Method = "GET";
  request.UserAgent = "Mozilla/5.0 (Windows NT 5.1; rv:10.0.2) Gecko/20100101 Firefox/10.0.2";

  // response
  using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
  {
    foreach (Cookie c in response.Cookies)
    {
      this.cookies.Add(new Cookie(c.Name, c.Value, c.Path, c.Domain));


    }
  }
}

Но, когда я отлаживаю запрос в Fiddler, я получаю это:

enter image description here

Почему в куки есть "$"?

Согласно MSDN

public Cookie (имя строки, строковое значение, строковый путь, строка домен)

имя Тип: System.String Название Cookie. Следующие символы не должны использоваться внутри имени: знак равенства, точка с запятой, запятая, символ новой строки (\ n), возврат (\ r), табуляция (\ t) и пробел. Знак доллара ("$") не может быть первым персонажем.

Как мне удалить этого персонажа?

1 Ответ

6 голосов
/ 01 марта 2012

$, который вы видите, не является именем файла cookie; это атрибут , связанный с файлом cookie.

RFC 2109 имеет дело с управлением состоянием HTTP; в разделе 4.4 конкретно рассматривается префикс знака доллара. Надеюсь, это поможет ...

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