- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我遇到了一个令人沮丧的情况,我编写的一些用于自动执行网站上某些操作的 java 代码在网站切换到 https 后停止工作。我无法再正常登录。相反,我最终会得到 200 结果,登录失败。
我不明白为什么它似乎忽略了我发送的登录数据,并且不向我返回 cookie 以在后续调用中识别自己的身份。
我在这里回答我自己的问题,因为我终于弄清楚发生了什么事,并希望它可以帮助其他人(以及 future 的我)。
最佳答案
我遇到麻烦的主要原因是该网站返回了带有适当 cookie 的 302 结果,但我从未有机会解释它。
HttpURLConnection
的默认行为是遵循我的重定向。如果它还保留了从第一个请求返回的 cookie,那就太棒了,但事实并非如此。这导致服务器接收到正确站点的重定向,但丢失了显示我的登录状态良好的 cookie。
要解决这个问题,只需要在我的程序中尽早调用:
HttpURLConnection.setFollowRedirects(false);
这让 302 被我的代码看到,然后代码可以收集 cookie 值并向新的 Location
重新提交请求。我不知道下面的重定向忽略了 Set-Cookie
header 值是否是一个错误,但无论它是否应该具有,它确实让我困惑了一段时间。
另一个问题是,我使用的网站有时会发送相对而不是绝对的 Location
值,因此我必须使用如下代码来处理该问题:
if (!location.startsWith("http")) {
String newLocation = url.getProtocol() + "://" + url.getHost();
if (url.getPort() > 0) {
newLocation += ":" + url.getPort();
}
if (location.startsWith("/")) {
newLocation += location;
}
else {
if (!location.startsWith("/")) {
location = "/" + location;
}
newLocation += url.getPath() + location;
}
location = newLocation;
}
url = new URL(location);
这将在一个循环中完成,不断尝试新的 url 值,同时 302 不断返回。
关于java - 为什么我的 Java HttpsURLConnection 调用不起作用并且 cookie 丢失?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29267850/
今天有小伙伴给我留言问到,try{...}catch(){...}是什么意思?它用来干什么? 简单的说 他们是用来捕获异常的 下面我们通过一个例子来详细讲解下
我正在努力提高网站的可访问性,但我不知道如何在页脚中标记社交媒体链接列表。这些链接指向我在 facecook、twitter 等上的帐户。我不想用 role="navigation" 标记这些链接,因
说现在是 6 点,我有一个 Timer 并在 10 点安排了一个 TimerTask。之后,System DateTime 被其他服务(例如 ntp)调整为 9 点钟。我仍然希望我的 TimerTas
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我就废话不多说了,大家还是直接看代码吧~ ? 1
Maven系列1 1.什么是Maven? Maven是一个项目管理工具,它包含了一个对象模型。一组标准集合,一个依赖管理系统。和用来运行定义在生命周期阶段中插件目标和逻辑。 核心功能 Mav
我是一名优秀的程序员,十分优秀!