2016-07-30 95 views
1

我的基於Webview的瀏覽器應用的一位用戶報告了將Google日曆嵌入到iframe中的問題。它看起來像由Android Webview加載的iframe(Google Play的最新版本,已通過Android 6測試)無法讀取或設置任何cookie。在Android Webview中,cookie不能在iframe中工作

該問題在同一設備上的谷歌瀏覽器中不存在。它似乎只與Android Webview有關。

我可以重現以下網站的問題。

<!DOCTYPE html> 
 
    <html> 
 
    <head> 
 
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" /> 
 
    </head> 
 
    <body> 
 
    <a href="http://www.w3schools.com/js/js_cookies.asp">Cookies Management</a> 
 
    <br><br> 
 
    <iframe style="margin-top: 30px; border-width: 1px;" src="http://www.w3schools.com/js/js_cookies.asp" width="400" height="672" scrolling="yes"></iframe> 
 
    </body> 
 
    </html>

如果您在主框架中通過鏈接打開該Cookie的網站,你可以設置/讀取按鈕餅乾「創建的Cookie ...」或「顯示所有Cookie」。然而,在iframe中顯示所有的cookies總是返回一個空的結果。即使你在顯示所有cookies的iframe中創建一個cookie,也會得到一個空的結果。

是否有任何Webview設置影響此行爲?

回答

5

我不知道爲什麼,但行爲可以通過啓用第三方cookie這樣加以改進:

if(android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) 
     CookieManager.getInstance().setAcceptThirdPartyCookies(webView,true); 

這樣做後,Cookie通常是在一個iFrame按預期工作。