找回密码
 立即注册

QQ登录

只需一步,快速开始

renho 活字格认证

银牌会员

81

主题

1275

帖子

3408

积分

银牌会员

积分
3408

活字格高级认证

QQ
renho 活字格认证
银牌会员   /  发表于:2021-10-12 19:02  /   查看:10972  /  回复:31
本帖最后由 Patrick.Zhu 于 2024-2-23 15:50 编辑



故事是这样的,有些php开发的系统是通过Session进行验证,经Post认证登录的时候仅返回cookie,而Session又存放在cookie里。


建议完善下发送http请求命令,使其可以返回cookie内容。

31 个回复

倒序浏览
zsdtylj
中级会员   /  发表于:2022-2-26 17:07:15
推荐
本帖最后由 zsdtylj 于 2022-2-26 17:18 编辑
renho 发表于 2022-2-14 17:53
服务端命令……好像我们说的不是同一个,前端确实可以用js操作,但是跨域麻烦。后端不需要跨域,但是没法 ...

其实很简单.我自己就用了好久了.自己写一个服务端插件.去获取对应的cookie.这个关键的代码.可以参考下.直接返回获取的cookie
  1. public void login()
  2.         {
  3.         var form = Context.Request.ReadFormAsync().Result;
  4.         var urladd = form["URL"];
  5.    

  6.             HttpWebRequest request = (HttpWebRequest)WebRequest.Create(urladd);
  7.            
  8.             try
  9.             {
  10.                 HttpWebResponse response = (HttpWebResponse)(request.GetResponse());
  11.                 string cc = response.GetResponseHeader("Set-Cookie");
  12.                 this.Context.Response.WriteAsync(cc);
  13.             }
  14.             catch (WebException ex)
  15.             {
  16.                 var response = (HttpWebResponse)ex.Response;
  17.                 string cc = response.GetResponseHeader("Set-Cookie");
  18.                
  19.                 string[] machineStrings = cc.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries);

  20.                 string[] st1 = machineStrings.Where(s => s.StartsWith("sessionCookie")).ToArray();
  21.                 string[] st2 = machineStrings.Where(s => s.StartsWith("_ati")).ToArray();
  22.                 this.Context.Response.WriteAsync(st1[0]);
  23.             }
复制代码


评分

参与人数 1金币 +5 收起 理由
Joe.xu + 5 很给力!

查看全部评分

回复 使用道具 举报
guoqp
银牌会员   /  发表于:2022-2-10 10:50:21
推荐
我也遇到这个问题,并不只是用于单点登录场景,我现在有一个场景需求就是要抓取三方系统后台数据,而这个数据需要登录后才能获取到,POST只能发送登录请求,可以发送COOKIES,但其返回的COOKIES取不到,在后续提交的GET请求中就无法使用返回的COOKIES提交,也就无法实现身份验证

本来我的理解是浏览器POST后COOKIE应该是跟访问一个效果的,COOKIE会自动保存,再次访问时会自动使用COOKIES,经测试发现并不是这么回事,还是需要提交COOKIES才能完成登录验证
回复 使用道具 举报
Simon.hu讲师达人认证 悬赏达人认证 活字格认证
超级版主   /  发表于:2021-10-13 18:30:00
沙发
大哥,我们发请求的时候应该可以模拟cookie发的,我自己以前玩过,把cookie的内容放到http的header中。
我是不是理解错了?
回复 使用道具 举报
renho活字格认证
银牌会员   /  发表于:2021-10-13 20:30:41
板凳
Simon.hu 发表于 2021-10-13 18:30
大哥,我们发请求的时候应该可以模拟cookie发的,我自己以前玩过,把cookie的内容放到http的header中。
我 ...

  问题是怎么取回
回复 使用道具 举报
Simon.hu讲师达人认证 悬赏达人认证 活字格认证
超级版主   /  发表于:2021-10-19 18:18:28
地板
这个是不是要看人家有没有单点登录的接口的,你想自己模拟总感觉有点怪
我们的同事研究一下后面回复你哈~
回复 使用道具 举报
renho活字格认证
银牌会员   /  发表于:2021-10-19 21:38:51
5#
Simon.hu 发表于 2021-10-19 18:18
这个是不是要看人家有没有单点登录的接口的,你想自己模拟总感觉有点怪
我们的同事研究一下后面回复你哈~

有接口当然就不需要这样了
希望讨论下加两行代码,顺便就把cookie返回了。
回复 使用道具 举报
guoqp
银牌会员   /  发表于:2022-2-10 10:50:53
7#
希望这个需求能在新版中解决
回复 使用道具 举报
renho活字格认证
银牌会员   /  发表于:2022-2-10 13:01:42
8#
有道理
回复 使用道具 举报
Chelsey.Wang讲师达人认证 悬赏达人认证 活字格认证
论坛元老   /  发表于:2022-2-10 14:34:56
9#
本帖最后由 Chelsey.Wang 于 2022-2-10 14:59 编辑
guoqp 发表于 2022-2-10 10:50
我也遇到这个问题,并不只是用于单点登录场景,我现在有一个场景需求就是要抓取三方系统后台数据,而这个数 ...

大佬,您向这个第三方系统发送的POST请求是在浏览器中发送的还是完全在后端发送的呢?如果是在浏览器中发送的响应报文是什么样子的,可以截图看看吗?
主要是想看看您的响应头:


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
guoqp
银牌会员   /  发表于:2022-2-10 17:58:32
10#
本帖最后由 guoqp 于 2022-2-10 18:07 编辑
Chelsey.Wang 发表于 2022-2-10 14:34
大佬,您向这个第三方系统发送的POST请求是在浏览器中发送的还是完全在后端发送的呢?如果是在浏览器中发 ...




以值与复活结构POST都失败了,但同样的数据我在其它软件没问题,不知道是不是操作问题

下边看下浏览器截图

其实我希望取的就是这个响应头中的setcookies,拿到它之后再附加到提交的协议头中就能解决问题了

我现在遇到的两个问题,一是POST后没有收到响应头数据,二是不知道希望有便捷的方式把返回的COOKIE作为命令参数之类功能直接提交,而不是我们手工处理提交,毕竟获取响应头,再提取COOKIE,再编辑提交头附加需要做好几步的事情呢。


再来说说为什么要有这样的需求,前台而不是服务器端
因为我要在前台直接跳转到三方网页中去,类似于单点登录,需要前台人工参与,你可以理解为就是想单纯的实现单点登录功能吧,三方系统免登录
另一个需求就是要抓取登录后某个网页中的数据,这个数据需要返回到我们自己的网页中来,比如抓取几个查询结果供我选择要把哪一个数据作为操作目标

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
1234下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部