Я столкнулся с проблемой при попытке прочитать содержимое стороннего файла cookie.
Файл cookie содержит такие значения, как: 110, IN, ABC, X, Y,,,,,
Я читаю файл cookie, используя:
_httpContextAccessor.HttpContext.Request.Cookies["key"];
Но он не вернул все данные.
Примечание. Это сторонний файл cookie, и я не могу его закодировать, чтобы избавиться от него.
Да, я не получаю полные данные на сервере.
Но даже если вы их не получите, если вы можете подтвердить, что все они разделены запятыми с помощью split
, вы можете получить все values
с помощью foreach
и сохранить их в list
Если вы хотите получить ключевые значения и использовать их или работать с ними, лучше всего использовать split
var cookieValue = _httpContextAccessor.HttpContext.Request.Cookies["key"];
if (cookieValue != null)
{
var values = cookieValue.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
foreach (var value in values)
{
// here you could save the values in a list or work with them
}
}
Я получил исправление: вместо получения значения cookie, например
Получите, как показано ниже:
private string ParseCookie(string cookieKey)
{
var cookieHeader =
_httpContextAccessor.HttpContext.Request.Headers["Cookie"].ToString();
if (!string.IsNullOrEmpty(cookieHeader))
{
// Split the cookies by ';' which is the delimiter for multiple cookies
var cookies = cookieHeader.Split(';');
foreach (var cookie in cookies)
{
// Split the individual cookie by '='
var parts = cookie.Split('=');
if (parts.Length == 2)
{
var key = parts[0].Trim();
var value = parts[1].Trim();
if (key == cookieKey)
{
// Process the comma-separated value
return Uri.UnescapeDataString(value);
// Perform any necessary actions based on the cookie value
break;
}
}
}
}
return String.Empty;
}
Мне пришло в голову, что вы используете
split
, но поскольку вы сказали, что это сторонний файл cookie, это не сработает, верно?