Есть ли способ прочитать cookie, созданный кодом JavaScript в контроллере ASP.NET Core? - PullRequest
0 голосов
/ 25 января 2019

Я хочу спросить, есть ли способ прочитать cookie, созданный кодом JavaScript в Контроллере?

Мое приложение находится в ASP.NET Core.

В моем представлении я создаю cookie с помощью JS следующим образом:

<script type="text/javascript">
  document.cookie = "username=John Doe";
</script>

Теперь в моем методе действия контроллера я пытаюсь прочитать cookie, но он не нашел там cookie:

public IActionResult Index()
{
    var boh = Request.Cookies["username"];
    return View();
}

Значение boh равно нулю, что означает отсутствие cookie.

Я выкопал немного глубже и осмотрел область "Сеть" и обнаружил, что cookie не добавляется в Ответ .См. Изображение ниже:

enter image description here

Если я могу добавить cookie в ответ, то я думаю, что он будет доступен в контроллере, но как?

Есть ли какое-нибудь решение ???

Спасибо и С уважением

Ответы [ 2 ]

0 голосов
/ 28 января 2019

Я обнаружил, что вам нужно закодировать значение cookie, как указал один из экспертов.Поэтому я исправил это, выполнив кодировку:

$(function () {
  var cookieValue = encodeURIComponent("John Doe");
  document.cookie = "username=" + cookieValue;
});
0 голосов
/ 28 января 2019

После проверки файлов cookie в HttpContext.Request.Headers, файл cookie, установленный вами document.cookie = "username=John Doe";, сохраняется в HttpContext.Request.Headers["Cookie"].

Попробуйте код ниже, чтобы получить куки.

StringValues values;
HttpContext.Request.Headers.TryGetValue("Cookie", out values);
var cookies = values.ToString().Split(';').ToList();
var result = cookies.Select(c => new { Key = c.Split('=')[0].Trim(), Value = c.Split('=')[1].Trim() }).ToList();
var username = result.Where(r => r.Key == "username").FirstOrDefault();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...