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;
}
}
}