renho 发表于 2021-10-12 19:02:27

【40811】建议完善“发送发送HTTP请求命令”支持返回cookie

本帖最后由 Patrick.Zhu 于 2024-2-23 15:50 编辑



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


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

zsdtylj 发表于 2022-2-26 17:07:15

本帖最后由 zsdtylj 于 2022-2-26 17:18 编辑

renho 发表于 2022-2-14 17:53
服务端命令……好像我们说的不是同一个,前端确实可以用js操作,但是跨域麻烦。后端不需要跨域,但是没法 ...
其实很简单.我自己就用了好久了.自己写一个服务端插件.去获取对应的cookie.这个关键的代码.可以参考下.直接返回获取的cookie public void login()
      {
      var form = Context.Request.ReadFormAsync().Result;
      var urladd = form["URL"];
   

            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(urladd);
         
            try
            {
                HttpWebResponse response = (HttpWebResponse)(request.GetResponse());
                string cc = response.GetResponseHeader("Set-Cookie");
                this.Context.Response.WriteAsync(cc);
            }
            catch (WebException ex)
            {
                var response = (HttpWebResponse)ex.Response;
                string cc = response.GetResponseHeader("Set-Cookie");
               
                string[] machineStrings = cc.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries);

                string[] st1 = machineStrings.Where(s => s.StartsWith("sessionCookie")).ToArray();
                string[] st2 = machineStrings.Where(s => s.StartsWith("_ati")).ToArray();
                this.Context.Response.WriteAsync(st1);
            }

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中。
我是不是理解错了?:L

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

Simon.hu 发表于 2021-10-19 18:18
这个是不是要看人家有没有单点登录的接口的,你想自己模拟总感觉有点怪
我们的同事研究一下后面回复你哈~

有接口当然就不需要这样了:'(
希望讨论下加两行代码,顺便就把cookie返回了。

guoqp 发表于 2022-2-10 10:50:53

希望这个需求能在新版中解决

renho 发表于 2022-2-10 13:01:42

有道理

Chelsey.Wang 发表于 2022-2-10 14:34:56

本帖最后由 Chelsey.Wang 于 2022-2-10 14:59 编辑

guoqp 发表于 2022-2-10 10:50
我也遇到这个问题,并不只是用于单点登录场景,我现在有一个场景需求就是要抓取三方系统后台数据,而这个数 ...
大佬,您向这个第三方系统发送的POST请求是在浏览器中发送的还是完全在后端发送的呢?如果是在浏览器中发送的响应报文是什么样子的,可以截图看看吗?
主要是想看看您的响应头:


guoqp 发表于 2022-2-10 17:58:32

本帖最后由 guoqp 于 2022-2-10 18:07 编辑

Chelsey.Wang 发表于 2022-2-10 14:34
大佬,您向这个第三方系统发送的POST请求是在浏览器中发送的还是完全在后端发送的呢?如果是在浏览器中发 ...



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

下边看下浏览器截图

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

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


再来说说为什么要有这样的需求,前台而不是服务器端
因为我要在前台直接跳转到三方网页中去,类似于单点登录,需要前台人工参与,你可以理解为就是想单纯的实现单点登录功能吧,三方系统免登录
另一个需求就是要抓取登录后某个网页中的数据,这个数据需要返回到我们自己的网页中来,比如抓取几个查询结果供我选择要把哪一个数据作为操作目标
页: [1] 2 3 4
查看完整版本: 【40811】建议完善“发送发送HTTP请求命令”支持返回cookie