JS Cookie не доступен на стороне сервера? - PullRequest
0 голосов
/ 15 февраля 2019

Так я создаю свой cookie с помощью Javascript и после этого перенаправляю на страницу корзины.

var d = new Date();
d.setTime(d.getTime() + (1 * 24 * 60 * 60 * 1000));
var expires = ";expires=" + d.toUTCString();
var product = { productId: btn.value, colorId: productColorId, quantity: 0 };
products.push(product);
document.cookie = "products=" + JSON.stringify(products) + expires + "; path=/; SameSite=strict";
window.location.href = "cart";

и я могу найти этот cookie в своем браузере в разделе cookie, но на стороне сервера я ничего не получаю.

Сначала я использую этот код и получаю значение NULL.

string products = HttpContext.Request.Cookies["products"];

После этого я пробую этот код

if (HttpContext.Request.Cookies.TryGetValue("products", out cookieValue))
{
   // TODO: use the cookieValue
}
else
{
   // this cookie doesn't exist.
}

и всегда он работает в другом месте. Кажется,даже не найти cookie.

Есть ли какие-либо предложения?

Ответы [ 2 ]

0 голосов
/ 20 февраля 2019

Согласно этой документации , опционально можно установить двойные кавычки и любые символы US-ASCII, исключая CTL, пробелы, двойные кавычки, запятую, точку с запятой и обратную косую черту.

Попробуйте следующие изменения в своем javascript, используйте encodeURIComponent () для преобразования двойных кавычек

document.cookie = "products=" + encodeURIComponent(JSON.stringify(product)) + expires + "; path=/; SameSite=strict";

Скриншот значения cookie, полученного на стороне сервера enter image description here enter image description here

0 голосов
/ 15 февраля 2019

В ответ на комментарий, заголовки Cookie в javascript запрещены, что означает, что они не могут быть установлены программно.Только браузер может установить его, и он может не отправлять информацию cookie вместе с HTTP-запросом, в зависимости от настроек браузера.(Обычно в настройках конфиденциальности)

Сначала я бы подтвердил, что заголовок cookie действительно отправляется.Обычно это можно узнать с помощью веб-инспектора браузера и просмотра сетевого запроса.Вот снимок экрана в chrome:

Google Chrome Network tab

Если вы не видите заголовок файла cookie, то я бы посоветовал дважды проверить браузернастройки конфиденциальности, чтобы гарантировать, что куки включены и отключить блокировку рекламы / отслеживания, если они у вас установлены.Если это так, то, к сожалению, вы мало что можете сделать, кроме как попросить пользователя изменить свои настройки или отключить блокировку рекламы.

Если вы DO увидите заголовок файла cookie,тогда это говорит о том, что это может быть проблема с внутренним кодом, но я не знаком с ASP.NET, поэтому я не могу комментировать это.

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

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