RestSharp请求https添加Cookie信息的正确姿势


RestSharp请求https添加Cookie信息的正确姿势

后台读取cookie

C# 全选
/// <summary>
/// 判断用户是否已经登录(解决Session超时问题)
/// </summary>
public bool IsUserLogin()
{
	//如果Session为Null
	string str = HttpContext.Session.GetString(YESKeys.SESSION_USER_INFO);
	if (!String.IsNullOrWhiteSpace(str))
	{
		return true;
	}
	else
	{
		//检查Cookies
		string userid = this.GetCookies(YESKeys.COOKIE_USER_NAME_REMEMBER);
		string password = this.GetCookies(YESKeys.COOKIE_USER_PWD_REMEMBER);
		if (!String.IsNullOrWhiteSpace(userid) && !String.IsNullOrWhiteSpace(password))
		{
			var user = entities.sys_User.Where(w => w.UserID == userid && w.Pwd == password).FirstOrDefault();
			if (user == null)
			{
				return false;
			}
			// 用户状态异常
			if (user.Status != 1)
			{
				return false;
			}

			if (user != null)
			{
				this.SetSessionUser(new UserInfo()
				{
					UserID = user.UserID,
					Account = user.Account,
					Ali_ID = user.Ali_ID,
					Email = user.Email,
					Phone = user.Phone,
					RegisterTime = user.RegisterTime,
					UserName = user.UserName,
					VIPLevel = (EnumVIPLevel)user.VIPLevel,
					WX_ID = user.WX_ID,
					IsAdmin = user.IsAdmin == "Y"
				});
				return true;
			}
		}
	}
	return false;
}

遇到问题

后台查看Cookie是空的,查看Cookie代码

HttpContext.Request.Cookies

既然Cookie是空的,那么用户的Session自然就没有咯,所以用户还是处于未登录状态

解决方案

使用AddParameter方式添加Cookie

C# 全选
request.AddParameter(_cookie_name, _cookie_value, ParameterType.Cookie);

请求完整的代码

C# 全选
RestClient client = new RestClient($"{txt_host.Text}/{txt_pathadmin.Text}/SysUser/index");
client.Timeout = -1;
var request = new RestRequest(Method.GET);
foreach (var v in cookies)
{
	request.AddParameter(v.Name, v.Value, ParameterType.Cookie);
}
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);

失败的方法集合

1)Postman请求查看代码中的方法

RestSharp请求https添加Cookie信息的正确姿势

C# 全选
var client = new RestClient("https://www.yesdotnet.com/admin666/SysUser/index");
client.Timeout = -1;
var request = new RestRequest(Method.GET);
request.AddHeader("cookie", "UM_distinctid=17d8e3a2a47e5a-ccccc-59191459-1fa400-17d8e3a2a48e7a; _ga=GA1.2.1145473237.1638932615; _gid=GA1.2.464309591.1638932615; .AspNetCore.Session=CfDJ8FTfHTouETlFraeJ811RiNGwLlvLXhCGZCds1nDmaabcteQ9t3a0AacmwHsKbf0wclOWRfE71zMibpvxdhtYPn01P46wYE5F4SK+3/hkVVhY/OklEiO5CjgD/oXUd8dREROz9Og2PbuqF+MoR2hAQv69dwTCyJ+uRFIDl0ya2FG; Hm_lvt_8a2cbd82a647d10cdd95d1d2d2946c78=; Hm_lpvt_8a2cbd82a647d10cdd95d1d2d2946c78=1639015258; yes_cookie_user_name_remember=*****; yes_cookie_user_pwd_remember=**********");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);

2)设置Header Set-Cookie方法

网上有人推荐试用Header的Set-Cookie

C# 全选
RestClient client = new RestClient($"{txt_host.Text}/{txt_pathadmin.Text}/SysUser/index");
client.Timeout = -1;
var request = new RestRequest(Method.GET);
foreach (var v in cookies)
{
	request.AddHeader("Set-Cookie", v.Name+"="+v.Value+ "; Path=/");
}
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);

经过测试,后台依然无法获取到正确的Cookie

 

 

 

 

版权声明:本文为YES开发框架网发布内容,转载请附上原文出处连接
管理员
上一篇:JS生成一个随机字符串
下一篇:winform组件OpenFileDialog控件Filter属性设置
评论列表

发表评论

评论内容
昵称:
关联文章

RestSharp请求https添加Cookie信息正确姿势
C#HTTP请求RestSharp.RestClient发起https请求报错
C# 解析加载读取XML文件正确姿势
Http请求中Referer设置,CEFSharp带Referer请求
ASP.NET Core 中读取Post Request.Body 正确姿势
C# HTTPHTTPS Get请求 和 Post 请求
使用.NET 6开发TodoList应用(10)——实现DELETE请求以及HTTP请求幂等性
vue项目使用axios发送请求让ajax请求头部携带cookie
【HttpHelper】HTTP Get和Post请求
.NET Core中鉴权授权正确方式(.NET5)
.NET中大型项目开发必备(9)--http请求调用(Post与Get)
win10各大浏览器Cookies文件存放位置
C# RestSharp上传和下载图片
C#四舍五入正确方式Math.Round
C# 如何给HttpClient添加UserAgent请求
ABP VNext框架中Winform终端开发和客户端授权信息处理
Python爬虫解析网页提取html信息常用方式
.Net 6 添加NLog
在Winform项目和Web API.NetCore项目中使用Serilog 来记录日志信息
C# 如何给HttpClient添加Accept:text/plain请求

联系我们
联系电话:15090125178(微信同号)
电子邮箱:garson_zhang@163.com
站长微信二维码
微信二维码