API 无法查看网站中间件对 HTTPRequest 的分配

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

我试图理解为什么 API 无法看到我在网站中间件中所做的分配。

public async Task InvokeAsync(HttpContext httpContext) { try {                httpContext.Request.Headers.SetCookie = new StringValues("some cookie"); } catch() { } }

当我使用

HttpContextAccessor
接听 API 调用时,它永远不会分配网站中的值。

造成这种情况的可能原因是什么? 我就是不明白。

当 Web 离开该方法时,它具有 HttpRequest 中的值。

请帮助我了解如何从网络向 API 发送值。

提前致谢。

c# asp.net-core-webapi asp.net-core-6.0
1个回答
0
投票

在 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"];

3.测试: enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.