使用asp.net web api读取cookie

问题描述 投票:0回答:3

我有一个 JavaScript 客户端,它使用

设置 cookie
document.cookie = "username=John Doe; expires=Thu, 18 Dec 2019 12:00:00 UTC";

我想使用 ASP.NET Web API(在 .NET 4.5 上运行)在服务器端读取此 cookie,但是当我检查请求对象时,我没有看到 cookie。

c# asp.net-mvc asp.net-mvc-4 asp.net-core asp.net-web-api
3个回答
1
投票

我不确定您指的是哪个版本的 Asp.Net,但根据:

https://learn.microsoft.com/en-us/aspnet/web-api/overview/advanced/http-cookies

您可以使用以下方式检索 cookie:

var userName = Request.Headers.GetCookies("userName").FirstOrDefault()?["userName"].Value;

在 Web api 2 控制器中,您还需要引用

System.Net.Http


0
投票

如果您想在任何操作过滤器(例如授权)中使用cookie,请使用以下代码来访问它们。

public override void OnAuthorization(HttpActionContext context)
{
    var cookie = context.Request.Headers.GetCookies("your-cookie-name").FirstOrDefault();
}

0
投票

1.如果你想在服务中获取cookie值,那么你可以使用这个:-

服务等级

public class CookieService : ICookieService
 {
     private readonly IHttpContextAccessor _contextAccessor;

     public CookieService(IHttpContextAccessor contextAccessor)
     {
         _contextAccessor = contextAccessor;
     }
     public string GetCookieValue()
     {
         string cookieValue = _contextAccessor.HttpContext.Request.Cookies["your Cookie Name"];

         return cookieValue ?? string.Empty;
     }
 }

接口:-

public class ICookieService
{
 string GetCookieValue();
}

你应该在你的startup.cs类中为IHttpContextAccessor添加注入依赖性

2.如果你想在控制器中获取cookie值,那么你可以使用这个:-

var cookieValue = HttpContext.Request.Cookies["your cookie value"].FirstOrDefault()
© www.soinside.com 2019 - 2024. All rights reserved.