2.9设置 Cookie(模拟/自动登录)

Cookie 是服务器在 HTTP 响应中发送的一段数据。 客户端 (选择性地) 存储 Cookie,并在后续请求中返回它。 这允许客户端和服务器共享状态。在发送 HTTP 远程请求时,设置 Cookie 有以下两种方式。

Cookie 是服务器在 HTTP 响应中发送的一段数据。 客户端 (选择性地) 存储 Cookie,并在后续请求中返回它。 这允许客户端和服务器共享状态。在发送 HTTP 远程请求时,设置 Cookie 有以下两种方式。

  • 通过 HttpClient 全局设置 Cookie

这种方式允许在同源域名下共享 Cookie,并且如果服务器返回了新的 Cookie,这些 Cookie 将在后续请求中自动携带,非常适用于实现网站自动登录等功能。

cs
var cookieContainer = new CookieContainer();// 可选设置默认 CookiecookieContainer.Add(new Uri("https://furion.net"), new Cookie("cookieName", "cookieValue"));// 默认客户端配置services.AddHttpClient(string.Empty)    .ConfigurePrimaryHttpMessageHandler(() => new SocketsHttpHandler    {        CookieContainer = cookieContainer,        UseCookies = true,   // 自动处理 Cookies,将在后续请求自动携带        AllowAutoRedirect = true    });
  • 单个请求设置 Cookie

这种方式仅对当前请求有效,如果服务器返回了新的 Cookie,它们不会被后续请求携带。

cs
await httpRemoteService.SendAsync(HttpRequestBuilder.Get("http://furion.net")    .WithCookie("cookieName", "cookieValue")    // 设置单个    .WithCookies(new { name = "furion", author = "monksoul" }));    // 设置多个

注意: 在实际应用中,您可能需要根据具体需求选择适当的 Cookie 设置方式,并确保 Cookie 的安全性,例如避免跨站脚本攻击(XSS)和跨站请求伪造攻击(CSRF)。同时,对于敏感信息,建议使用更安全的认证机制,如 OAuthJWT 等。