【问题标题】:HttpPost: No "Set-Cookie" HeaderHttpPost:没有“Set-Cookie”标头
【发布时间】:2011-12-14 12:24:19
【问题描述】:

我想获取网站的会话 cookie。不幸的是,“Set-Cookie”-Header 没有出现。

这是我编写的代码: “commands”是一个String[][],整个代码被try/catch包裹起来。

CookieStore cookieStore = new BasicCookieStore();
HttpContext localContext = new BasicHttpContext();
localContext.setAttribute(ClientContext.COOKIE_STORE,cookieStore);
HttpPost httppost = new HttpPost(url);
List<NameValuePair> nvps = new ArrayList<NameValuePair>(0);
for (int i=0;i<commands.length;++i)
    nvps.add(new BasicNameValuePair(commands[i][0],commands[i][1]));
httppost.setEntity(new UrlEncodedFormEntity(nvps,HTTP.UTF_8));
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
Header[] headers = response.getAllHeaders();
List<Cookie> cookies = cookieStore.getCookies();
String data = EntityUtils.toString(entity);

我对Http通信的理解告诉我应该有一个“Set-Cookie”的Header。我从 response.getAllHeaders() 获得的唯一标头是 Connection:close、X-Powered-By:PHP/4.3.4 和 Content-Type:text/html

返回的数据中包含一些 javascript (response.getEntity())。

<script language = "javascript">
<!--
location.href="/index.php";
function SetCookie(name,value,expire,path){
    document.cookie = name + "=" + escape(value) + ((path == null) ? "":(";path="+path))
}
var iad = 461180104
SetCookie("iad",iad,0,"/")
-->
</script>

据我了解,这段代码永远不会执行,因为它只是一个注释?! 但这也可能是应该创建 cookie 的地方。

有什么想法吗?

更新: “Opera Mobile”是我发现的唯一一款对本网站的 cookie 没有问题的 Android 浏览器。 “Opera Mini”、“Dolphin HD”和 Froyo Stock 浏览器都失败了。没有桌面浏览器有连接问题。这是一个 webkit 问题吗?如果是这种情况:如何避免?

【问题讨论】:

  • 仅供参考,也许有帮助:“var iad =”后面的数字每次访问都会改变。

标签: android cookies http-post


【解决方案1】:

使用 Chrome 的开发者工具或 Firebug,检查 HTTP 响应中 Set-Cookie 标头字段中的“expires”参数。确保手机上的时间/日期设置正确。如果浏览器认为 cookie 已经过期,则不会存储它。

如果这不起作用,请尝试使用 wireshark / tshark 从您的客户端获取通信痕迹,并将其与以您期望的方式运行的浏览器进行比较。

顺便说一句,围绕该位 Javascript 的注释分隔符不会阻止脚本运行;他们只是阻止旧的(真正旧的)浏览器尝试在文档中呈现脚本。该cookie(“iab”)看起来不像用于身份验证的cookie。可能有一个带有会话标识符的 http-only cookie;您应该能够使用前面提到的 Firebug / Dev 工具看到它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-08
    • 2019-08-08
    • 2011-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-30
    • 2017-03-01
    相关资源
    最近更新 更多