我正在尝试通过 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/