2011-10-24 2 views
1

WebサイトのセッションCookieを取得したいとします。残念ながら、 "Set-Cookie"ヘッダーは表示されません。HttpPost:No Set-Cookieヘッダー

私が書いたコードは次のとおりです。 "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 Communication」を理解すると、「Set-Cookie」ヘッダーがあるはずです。 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> 

私がこれを理解する限り、このコードは決してコメントではないので実行されません。 しかし、これはおそらくクッキーを作成する場所のビットです。

アイデア?

更新日: 「Opera Mobile」は、このサイトのCookieに問題はないAndroid用の唯一のブラウザです。 「Opera Mini」、「Dolphin HD」、Froyo Stockブラウザはすべて失敗します。デスクトップブラウザは接続に問題がありません。これはWebkitの問題ですか?そして、これが事実なら:それを避ける方法?

+0

ちょうどfyi、多分助けてください: "var iad ="の次の数字は訪問ごとに変わります。 – stefan

答えて

0

Chromeの開発ツールまたはFirebugを使用して、Set-Cookieヘッダーフィールドの「期限切れ」パラメータのHTTP応答を確認します。電話機の時刻/日付設定が正しく設定されていることを確認してください。クッキーがすでに期限切れになっているとブラウザが判断した場合、クッキーは保存されません。

これでうまくいかない場合は、wireshark/tsharkを使用してクライアントからの通信のトレースを取得し、期待通りに動作しているブラウザと比較してみてください。

ところで、Javascriptのそのビット周辺のコメント区切り文字は、スクリプトの実行を妨げません。古い(本当に古い)ブラウザがドキュメント内でスクリプトをレンダリングしようとしないようにするだけです。そのCookie( "iab")は、認証のためのCookieのようには見えません。おそらく、セッション識別子を持つhttpのみのクッキーがあります。前述のFirebug/Devツールを使って見ることができるはずです。