HttpPost: нет заголовка "Set-Cookie" - PullRequest
1 голос
/ 25 октября 2011

Я хочу получить сессионный cookie-файл веб-сайта. К сожалению, заголовок "Set-Cookie" не появляется.

Вот код, который я написал: «command» - это 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>

Насколько я понимаю, этот код никогда не выполняется, потому что это просто комментарий ?! Но также это, вероятно, бит, где печенье должно быть создано.

Есть идеи?

UPDATE: «Opera Mobile» - единственный браузер для Android, который я обнаружил, у которого нет проблем с куки на этом сайте «Opera Mini», «Dolphin HD» и браузер Froyo Stock терпят неудачу. Нет настольного браузера, есть проблемы с подключением. Это проблема webkit? И если это так: как этого избежать?

1 Ответ

0 голосов
/ 22 ноября 2011

Используя инструменты разработчика Chrome или Firebug, проверьте HTTP-ответ для параметра «expires» в поле заголовка Set-Cookie. Убедитесь, что настройки времени / даты на телефоне установлены правильно. Если браузер считает, что срок действия файла cookie истек, он не будет его хранить.

Если это не сработает, попробуйте использовать wireshark / tshark, чтобы получить трассировку сообщения от вашего клиента и сравнить его с браузером, который работает так, как вы ожидаете.

Кстати, разделители комментариев вокруг этого бита Javascript не мешают запуску скрипта; они просто не позволяют старым (действительно старым) браузерам пытаться отобразить скрипт в документе. Этот cookie («iab») не похож на cookie для аутентификации. Вероятно, существует файл cookie только для http с идентификатором сеанса; вы сможете увидеть его, используя вышеупомянутые инструменты Firebug / Dev.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...