在Chrome V80+中,由于改变了Cookie的SameSite属性,默认值为Lax,可能导致在ASP.NET中的Request.Cookies不再起作用。
以下是一个解决方法的示例代码:
首先,在Web.config文件中添加以下配置:
然后,在Global.asax文件中的Application_BeginRequest方法中添加以下代码:
protected void Application_BeginRequest(object sender, EventArgs e)
{
if (Request.Headers.GetValues("Origin") != null && Request.HttpMethod == "OPTIONS")
{
Response.Flush();
}
}
这段代码的作用是处理浏览器跨域请求中的预检请求,即OPTIONS请求,并且将响应立即刷新,以确保浏览器接收到正确的响应头。
接下来,在需要使用Request.Cookies的地方,可以使用以下代码:
var cookieValue = Context.Request.Cookies["cookieName"]?.Value;
请注意,此处使用的是Context.Request.Cookies而不是Request.Cookies。Context对象在ASP.NET中代表当前的HTTP请求上下文。
通过以上步骤,应该可以解决在Chrome V80+中Request.Cookies不起作用的问题。