0

在我的客户端(MVC 应用程序的控制器)中,我使用下面的代码来设置 cookie 值:

HttpCookie cookie = new HttpCookie("TestCookie");
cookie.value = 'Test';
HttpContext.Request.Cookies.Add(cookie);

我还在请求标头中设置 cookie 值。这是在我配置微风实体管理器时完成的。我使用微风查询从 web api 获取数据。

'Cookie': UserProfileID = config.getCookies('UserProfileID')

但是在 Web API 中,我总是发现请求标头中没有 cookie。

request.Headers.GetCookies("UserProfileID").FirstOrDefault()
4

1 回答 1

2

要设置 cookie,您需要将其添加到Response对象,而不是Request.

var cookie = new HttpCookie("TestCookie");
cookie.Value = "Test";
HttpContext.Response.Cookies.Add(cookie);

经过更多研究,我发现了这个问题。答案提供了一些关于 Web API 本质的见解:

这里没有太多的工作要做,但一般来说,Web API 与 MVC 的主要区别在于它完全符合 REST 标准,而 MVC 则不是。符合 REST 的应用程序是无状态的(换句话说:没有会话、没有 cookie 等)。API 端点需要的所有内容都必须与请求一起在 URL、请求标头或请求正文中发送。这意味着您可以在 GET 请求的查询字符串或 POST 的正文中发送 cookie 的值(而不是 cookie 本身),或者与 REST API auth 一样,作为 Authorization HTTP 标头发送。

因此,为了获得您想要的结果,您需要在 MVC 应用程序中提取客户端上 cookie 的值,然后将其作为 API 请求数据的一部分发送,或者按照建议使用 Authorization HTTP 标头。

于 2015-02-06T15:56:10.647 回答