C# 无法读取asp.net core中请求的所有Cookie

C# 无法读取asp.net core中请求的所有Cookie,c#,cookies,asp.net-core-mvc,asp.net-core-3.0,httpcookie,C#,Cookies,Asp.net Core Mvc,Asp.net Core 3.0,Httpcookie,我用asp.net核心mvc编写代码。我的问题是通过javascript设置somes cookie,但在asp.net核心mvc控制器中,我无法检索以前设置的特定键的值。然后我尝试计算cookie列表中存在的密钥数 string strCart = Request.Cookies.Count().ToString(); 输出是2,尽管它必须是3,并且我想要获取的密钥在请求中丢失。Cookies 编辑: 这是js代码 function SetCookie(cname, cvalue, exda

我用asp.net核心mvc编写代码。我的问题是通过javascript设置somes cookie,但在asp.net核心mvc控制器中,我无法检索以前设置的特定键的值。然后我尝试计算cookie列表中存在的密钥数

string strCart = Request.Cookies.Count().ToString();
输出是2,尽管它必须是3,并且我想要获取的密钥在
请求中丢失。Cookies

编辑: 这是js代码

function SetCookie(cname, cvalue, exdays,cpath) 
{ 
  let d = new Date(); 
  d.setTime(d.getTime() + (exdays*24*60*60*1000));
  let expires = "expires="+ d.toUTCString();
  document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/" + cpath;
} 

它直接在php上工作,但在asp.net中遇到了asp.net核心的问题,您不需要做很多级别的工作。像创建cookie这样的东西正是你通常不做的事情。Net使这里的编程更容易。其中包括通过cookie和链接值存储和检索会话ID的automagic。该代码可能很容易吞下客户端创建的cookie,而服务器不知道它。它甚至可能是一种主动安全措施——允许客户端请求设置任何随机值一次又一次地带来麻烦

根据一条评论,这就是您所期望的:
cart=[{“id”:1,“qty”:6}]
。所以我要猜一个网上商店。现在,像购物车这样的数据实际上不属于客户端。攻击者很容易通过向您抛出意外值来破坏您的代码。永远不要相信用户的输入。任何网络都应该消除这种不信任


我认为,当他们允许你在登录前使用购物车时,他们所做的就是给你一个会话ID,而不管登录状态如何。通常只有在登录后才能获得SID。但是网上商店倾向于给每个不随请求发送的人。这是希德给每个人的。如果他们以后确实登录或创建了一个帐户,那只是将会话链接到帐户、在服务器端复制购物车或类似的事情。

感谢您的支持,现在我发现了代码的问题。问题是在设置cookie值时,我忘记转义字符串的字符。在php或js中,这是可以接受的,但c#是强类型语言,c#使用双引号确定字符串,因此json字符串具有导致冲突的字符。之后,结果是缺少特定的cookie

能否显示javascript中设置cookie的代码?另外,您是否通过在浏览器中检查cookie来确认cookie是否存在?请在问题中编辑其他代码。这次它是为你做的。@LemuelBotha当我检查它时,它都存在于浏览器中。@Christopher我已经编辑过了。输入/你如何调用它可能很重要。毕竟,如果exdays为0,则到期日期将为“现在”。这意味着它是在发送之前收集的。谢谢你的建议,我已经找到了解决办法。