using Microsoft.AspNetCore.Http; using Microsoft.Extensions.Primitives; using System; using System.Linq; namespace TEAMModelOS.SDK.Helper.Network.HttpHelper { public static class HttpContextHelper { /// /// 设置本地cookie /// /// 键 /// 值 /// 过期时长,单位:分钟 public static void SetCookies(HttpResponse Response, string key, string value, int minutes = 30) { Response.Cookies.Append(key, value, new CookieOptions { Expires = DateTime.Now.AddMinutes(minutes) }); } /// /// 删除指定的cookie /// /// 键 public static void DeleteCookies(HttpContext httpContext, string key) { httpContext.Response.Cookies.Delete(key); } /// /// 在Http中获取值 /// /// 键 /// 返回对应的值 public static string GetValueInHttp(HttpRequest Request, string key) { string aktoken = ""; if (string.IsNullOrEmpty(aktoken)) { //或者在头获取 Request.Headers.TryGetValue(key, out StringValues akh); if (!string.IsNullOrEmpty(akh)) { aktoken = akh; } } if (string.IsNullOrEmpty(aktoken)) { //其次在参数中获取 Request.Query.TryGetValue(key, out StringValues ak); if (!string.IsNullOrEmpty(ak)) { aktoken = ak; } } //从cookie获取 if (string.IsNullOrEmpty(aktoken)) { Request.Cookies.TryGetValue(key, out string value); if (!string.IsNullOrEmpty(value)) { aktoken = value; } } if (string.IsNullOrEmpty(aktoken)) { //在referer获取 Request.Headers.TryGetValue("referer", out StringValues referer); string token = ""; if (referer.Contains(key + "=")) { string[] pramas = referer[0].Substring(referer[0].IndexOf(key + "=")).Split("&"); int len = pramas.Count(); if (len > 0) { for (int i = 0; i < len; i++) { if (pramas[i].Contains(key)) { token = pramas[i].Split("=")[1]; break; } } } } if (!string.IsNullOrEmpty(token)) { aktoken = token; } } return aktoken; } } }