微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

带有 Java 会话 cookie 的 CURL 在 Linux 上工作但在 Windows 上失败

如何解决带有 Java 会话 cookie 的 CURL 在 Linux 上工作但在 Windows 上失败

我有一段代码可以模拟登录到某个 java servlet,获取 JSESSIONID 并在使用后将其分配给其他所有请求:

curl_setopt($curl,CURLOPT_COOKIE,$cookie);

一个请求获取登录表单并生成 cookie,然后我使用新生成的 cookie 发出另一个请求以获取验证码图像(有自己的系统并且很容易获取),并使用来自用户。这是可行的,但是除了登录之外进行任何其他操作会完全终止我与该 servlet 的会话(不是我丢失了 cookie,而是会话突然没有登录,就像它已过期一样)。

奇怪的是,这是 Windows Server 2019 机器上的行为,但它在 Linux 机器上完美运行,并且发送的数据包在两者上完全相同。

我尝试将 CURLOPT_HTTPAUTH 从 CURLAUTH_BASIC 更改为其他所有值,但均无效。 PHPInfo 显示我的 Windows 机器有 curl 7.70.0 (PHP 7.3.27),我的 Linux 机器有 curl 7.19.7 (PHP 7.3.25)。

WINDOWS

LINUX

我尝试在同一台 Windows 机器上的 Web 浏览器上执行这些请求,但未能执行此操作并且可以正常工作,因此这与 IP 黑名单或类似问题无关,问题一定与 curl 相关。这里可能有什么问题?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。