Задаване на бисквитки на Android Webview от HTML файл в директорията с активи

Опитвам се да задам бисквитка, използвайки javascript в уеб изглед. Уеб изгледът се зарежда от локалната директория с активи по този начин (където страницата е низ като "index.html")

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

Открих, когато точно същият файл се зарежда от мрежата (т.е. http://www.domain.com/index.html), тогава същият файл може да зададе бисквитката според очакванията.

По-старите версии на android позволяват създаването на бисквитки на локални файлове, но по-новите версии не. Тествах това и работи на Samsung Galaxy Ace, HTC Desire Z и eclipse емулатори на по-нисък SDK, но не работи на Samsung SIII или Samsung Tab 10.1.

Трябва да задам бисквитка, за да пренасям данни между страниците в моя уеб изглед; запазване на резултатите от търсенето за повторно показване.

Ако някой знае някакви методи/хакове за заобикаляне на този проблем с локалните файлове, наистина ще съм много благодарен. Занимавам се с това от около 8 седмици. Зададох подобен въпрос, който може да е полезен за по-нататъшно четене, но проблемът вече е идентифициран и е много различен въпрос, така че задавам това тук. Бисквитката за уеб изглед на Android връща нула

Благодаря.


person kirgy    schedule 17.10.2013    source източник
comment
Знам, че е зададен отдавна, но намерихте ли вече някакво решение?   -  person Hamid    schedule 03.02.2015
comment
Проблемът е причинен от корекция на проблем със сигурността. Разрешаване на всяко приложение да съхранява бисквитки под домейна localhost. Това на практика означава, че всеки може да създаде приложение за четене/запис от същото хранилище за бисквитки. В резултат на това това беше блокирано от Android в по-късните версии на Android. Вижте моя подобен въпрос: stackoverflow.com/questions/19235489/   -  person kirgy    schedule 04.02.2015


Отговори (2)


Причината, поради която това не е възможно, се свежда до ограничение на сигурността за прилагане на бисквитки през localhost. Ако настройката на бисквитките беше възможна, тогава би било възможно и други да създават приложения и да четат бисквитките на вашите приложения. Преди беше възможно в ранните версии на Android, но дупката в сигурността по-късно беше закърпена.

Ето защо същото ограничение съществува за конвенционалните уеб браузъри.

Вижте този свързан въпрос и отговор: бисквитката за уеб изглед на Android връща нула

person kirgy    schedule 04.01.2017

Занимавал съм се с подобен случай на употреба като този, който описвате, ето подхода, който предприех

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

    CookieManager.getInstance().setCookie("/", "MyCookie=xxx");
    
  • Когато JS библиотека създаде бисквитки на файлова схема (тъй като те се зареждат от файловата система) и трябваше да извлека тези стойности на „родния“ слой, бих използвал:

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

Последният ще върне дълъг низ от всички бисквитки на файловата схема, които можете да разделите на масив и да анализирате една по една

Надявам се това да помогне.

person Pepe Ramirez    schedule 06.03.2017