2013-10-17 57 views
4

我試圖在webview中使用javascript設置cookie。 web視圖從本地資產目錄加載像這樣(其中第一個字符串,如「index.html的」)從資產目錄中的HTML文件設置Android Webview cookie

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

時完全相同的文件從網頁加載我發現(即http://www.domain.com/index.html),然後相同的文件可以按預期設置cookie。

舊版本的android允許在本地文件上創建cookie,但新版本不允許。我已經測試過它,它可以在三星Galaxy Ace,HTC Desire Z和eclipse下SDK的模擬器上運行,但不適用於三星SIII或三星Tab 10.1。

我需要設置一個cookie,以便在我的web視圖中的頁面之間傳輸數據;保存搜索結果以重新顯示。

如果有人知道任何方法/黑客來解決這些本地文件問題,我真的很想知道它。我已經在這裏約8周了。我問了一個可能對進一步閱讀有幫助的類似問題,但問題現在已經確定,並且是一個非常不同的問題,所以我在這裏問這個問題。 Android webview cookie returns null

謝謝。

+0

我知道這是很久以前問過,但你有沒有找到任何解決方案呢? – Hamid

+0

該問題是由修復安全問題引起的。允許任何應用程序在「本地主機」域下存儲Cookie。這實際上意味着任何人都可以創建一個應用程序來讀取/寫入同一個cookie存儲。因此,Android在更高版本的Android中被阻止。 看到我的類似問題:http://stackoverflow.com/questions/19235489/android-webview-cookie-returns-null – kirgy

+0

謝謝你kirgy – Hamid

回答

1

這是不可能的原因是在本地主機上實現cookie的安全限制。如果可以設置cookie,那麼其他人也可以創建應用並閱讀您的應用cookie。它曾經可以在Android的早期版本中使用,但後來修補了安全漏洞。

這就是傳統網絡瀏覽器存在相同限制的原因。

請參閱此相關的問題和答案: Android webview cookie returns null

0

我一直在處理一個類似用途的情況下,像你描述的一個,這裏是我把

  • 每當我需要設置方法餅乾直接在科爾多瓦的WebView(如文件方案餅乾):

    CookieManager.getInstance().setCookie("/", "MyCookie=xxx"); 
    
  • 當JS庫會創建文件方案餅乾(因爲它們是從文件系統加載),我需要的「原生」層上獲取這些價值,我會用:

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

後者將返回一個長字符串所有的文件格式餅乾,你可以分割成一個數組和一個一個的解析

希望這會有所幫助。

相關問題