【问题标题】:get the index of cookie from list in c#从 C# 中的列表中获取 cookie 的索引
【发布时间】:2022-05-22 01:29:50
【问题描述】:

在下面的代码中,我有 cookie,例如:__RequestVerificationToken_LlsZQ2=Z_nK9nEK9xNmHA34qmw...,我想要 cookie 的确切名称,即 __RequestVerificationToken_LlsZQ2

var headers = actionContext.Request.Headers;
if(headers.GetCookies().Any(x => x.Cookies.Any(y => y.Name.Contains("_RequestVerificationToken_")))) 
{
   var tokenCookie = headers.GetCookies()
                  .Select(c => c[headers.GetCookies()[0].Cookies[0].Name.ToString()])
                  .FirstOrDefault();
}

我在headers.GetCookies()[0].Cookies[0].Name.ToString() 的帮助下获得了 cookie 的名称。但是如果我不确定 cookie 的索引,那么如何获取它的索引呢?

PS 在__RequestVerificationToken_LlsZQ2 中,__RequestVerificationToken_ 将保持原样。 我试过headers.GetCookies().IndexOf(x => x.Cookies.Any(y => y.Name.Contains("_RequestVerificationToken_"))),但它给出了错误。

【问题讨论】:

  • 在我这边,名称以“.AspNetCore.Antiforgery”开头所以获取所有cookie,并遍历数组以找到以/包含它开头的那个。您可以在浏览器的检查器中查看这些内容。 (xhr 请求)
  • 顺便说一句,从文档看来,名称是根据服务器路径生成的……可能是单向哈希。您可以将其设置为您喜欢的任何内容......为什么需要cookie的名称? (只是好奇)
  • 是否需要 LINQ 查询?如果没有,为什么不直接使用 for 循环?

标签: c# arrays asp.net list lambda


【解决方案1】:

从头变量的 0 索引开始创建一个子字符串,并在“=”字符之前结束。这应该让你知道 cookie 的名称。

string tokenCookie = headers.Substring(0, headers.IndexOf("="));

【讨论】:

  • 您的答案可以通过添加有关代码的作用以及它如何帮助 OP 的更多信息来改进。
猜你喜欢
  • 2013-12-19
  • 1970-01-01
  • 2013-03-30
  • 1970-01-01
  • 2013-06-15
  • 2011-09-24
  • 2021-10-06
  • 1970-01-01
  • 2023-02-22
相关资源
最近更新 更多