我试图理解为什么 API 无法看到我在网站中间件中所做的分配。
public async Task InvokeAsync(HttpContext httpContext) { try { httpContext.Request.Headers.SetCookie = new StringValues("some cookie"); } catch() { } }
当我使用
HttpContextAccessor
接听 API 调用时,它永远不会分配网站中的值。
造成这种情况的可能原因是什么? 我就是不明白。
当 Web 离开该方法时,它具有 HttpRequest 中的值。
请帮助我了解如何从网络向 API 发送值。
提前致谢。
在 ASP.NET Core 中间件中,使用
httpContext.Request.Headers.SetCookie
赋值并不能有效设置 cookie。这是因为 cookie 通过响应的 Set-Cookie
标头传输到客户端,而不是通过请求的 Set-Cookie
标头接收。
您可以按照以下步骤设置和获取cookie:
1.在中间件中设置cookie:
httpContext.Response.Cookies.Append("MyCookie", "cookie_value");
这将在 HTTP 响应的 Set-Cookie 标头中添加一个名为“MyCookie”的 cookie,然后将其发送到客户端。浏览器会存储这个cookie,并在后续请求中自动将其发送回服务器。
2.获取客户端发送的cookie:
var cookieValue = _httpContextAccessor.HttpContext.Request.Cookies["MyCookie"];