Настройка файлов cookie Android Webview из файла HTML в каталоге активов

Я пытаюсь установить файл cookie с помощью javascript внутри веб-просмотра. Веб-представление загружается из локального каталога активов, например (где страница — это строка, такая как «index.html»)

engine.loadUrl("file:///android_asset/" + page);

Я обнаружил, что точно такой же файл загружается из Интернета (например, http://www.domain.com/index.html), то тот же файл может установить файл cookie, как и ожидалось.

Старые версии Android позволяют создавать файлы cookie в локальных файлах, а новые версии — нет. Я протестировал это, и оно работает на эмуляторах Samsung Galaxy Ace, HTC Desire Z и eclipse с более низким SDK, но не работает на Samsung SIII и Samsung Tab 10.1.

Мне нужно установить файл cookie, чтобы передавать данные между страницами в моем веб-просмотре; сохранение результатов поиска для повторного отображения.

Если кто-нибудь знает какие-либо методы/хаки, чтобы обойти эту проблему с локальными файлами, я был бы очень признателен. Я занимаюсь этим уже около 8 недель. Я задал аналогичный вопрос, который может быть полезен для дальнейшего чтения, но теперь проблема выявлена, и это совсем другой вопрос, поэтому я задаю его здесь. Файл cookie веб-просмотра Android возвращает значение null

Спасибо.


person kirgy    schedule 17.10.2013    source источник
comment
Я знаю, что это задано давно, но вы уже нашли какое-либо решение?   -  person Hamid    schedule 03.02.2015
comment
Проблема вызвана исправлением проблемы безопасности. Разрешение любому приложению хранить файлы cookie в домене localhost. Фактически это означает, что любой может создать приложение для чтения/записи из того же хранилища файлов cookie. В результате это было заблокировано Android в более поздних версиях Android. См. мой аналогичный вопрос: stackoverflow.com/questions/19235489/   -  person kirgy    schedule 04.02.2015


Ответы (2)


Причина, по которой это невозможно, связана с ограничением безопасности реализации файлов cookie через localhost. Если бы настройка файлов cookie была возможна, другие также могли бы создавать приложения и читать файлы cookie ваших приложений. Раньше это было возможно в ранних версиях Android, но позже дыра в безопасности была закрыта.

Вот почему такое же ограничение существует и в обычных веб-браузерах.

См. этот связанный вопрос и ответ: файл cookie веб-просмотра Android возвращает значение null

person kirgy    schedule 04.01.2017

Я имел дело с аналогичным вариантом использования, подобным тому, который вы описываете, вот подход, который я выбрал

  • Всякий раз, когда мне нужно было установить файлы cookie непосредственно в Cordova WebView (например, файлы cookie схемы файлов):

    CookieManager.getInstance().setCookie("/", "MyCookie=xxx");
    
  • Когда библиотека JS будет создавать файлы cookie файловой схемы (поскольку они загружаются из файловой системы), и мне нужно получить эти значения на «собственном» уровне, я бы использовал:

    CookieManager.getInstance().getCookie("file://");
    

Последний вернет длинную строку всех файлов cookie файловой схемы, которую вы можете разделить на массив и проанализировать один за другим.

Надеюсь это поможет.

person Pepe Ramirez    schedule 06.03.2017