java - 通过 Java 进行 HTTPS 身份验证和 Cookie

标签 java authentication networking https

我正在尝试通过 Java 编程从 HTTPS URL 登录并检索状态信息。我通过/login.cgi 登录,通过对该脚本的 POST 请求提供用户名和密码。

然后,该脚本验证凭据并创建特定的 cookie(包含 session 信息、用户名等),然后立即调用/home.cgi 的位置响应 header 。我猜测/home.cgi 脚本会在继续加载之前验证 cookie 信息。否则,它只会返回到/login.cgi 页面。

由于浏览器正确处理 cookie/ session 的方式,所有这些都可以在浏览器中正常工作。然而,在 Java 中,这非常棘手,因为我无法获取适当的 cookie 作为请求发送到后续页面。我无法获得正确的 cookie,因为我无法在/login.cgi 创建特定 cookie 和它调用 Location/home.cgi 之间获取 HTTP 响应(其中包含正确的“Set-cookie”值)。

是否有我遗漏的东西,或者是否有更好的方法让 Java 可以像浏览器一样处理 cookie? (有cookie商店等吗?)

感谢您的帮助,

史蒂夫

最佳答案

默认情况下,java.net HTTP API 中未启用 Cookie 管理。如果您不需要任何特定的处理或跨应用程序 cookie 持久性(当您的应用程序终止时 cookie 将被删除),您可以简单地启用它

CookieHandler.setDefault(new CookieManager());

关于java - 通过 Java 进行 HTTPS 身份验证和 Cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2072241/

相关文章:

java - 扫描仪无法正常工作

security - 不需要 UserProvider 的自定义身份验证

php - SQL 语句的问题 - 使用 PHP 查询数据库

c++ - 将对象传递给网络数据包处理程序?

amazon-web-services - 通过 CNAME 别名访问应用程序时,什么会导致应用程序过时?

java - 持久化类中的构造函数

java - 当我尝试连接到服务器时出现“远程服务器超时”异常

c# - 不使用内置成员资格功能时使用 FormsAuthentication.SignOut 是否有意义

c++ - 如何使用Qt检查webservice是否启动

java - 无法启动 Internet Explorer ---Selenium