2.9设置 Cookie(模拟/自动登录)
Cookie 是服务器在 HTTP 响应中发送的一段数据。 客户端 (选择性地) 存储 Cookie,并在后续请求中返回它。 这允许客户端和服务器共享状态。在发送 HTTP 远程请求时,设置 Cookie 有以下两种方式。
Cookie 是服务器在 HTTP 响应中发送的一段数据。 客户端 (选择性地) 存储 Cookie,并在后续请求中返回它。 这允许客户端和服务器共享状态。在发送 HTTP 远程请求时,设置 Cookie 有以下两种方式。
- 通过
HttpClient全局设置Cookie
这种方式允许在同源域名下共享 Cookie,并且如果服务器返回了新的 Cookie,这些 Cookie 将在后续请求中自动携带,非常适用于实现网站自动登录等功能。
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,它们不会被后续请求携带。
await httpRemoteService.SendAsync(HttpRequestBuilder.Get("http://furion.net") .WithCookie("cookieName", "cookieValue") // 设置单个 .WithCookies(new { name = "furion", author = "monksoul" })); // 设置多个注意: 在实际应用中,您可能需要根据具体需求选择适当的 Cookie 设置方式,并确保 Cookie 的安全性,例如避免跨站脚本攻击(XSS)和跨站请求伪造攻击(CSRF)。同时,对于敏感信息,建议使用更安全的认证机制,如 OAuth、JWT 等。