पृष्ठभूमि:कुकीज़ Android Webview एपीआई 21 में जमा हो जाती है और नहीं कर रहे हैं अप
मैं एपीआई 21 में एंड्रॉयड Webview
रों साथ एक बहुत ही भ्रामक व्यवहार का सामना कर रहा हूँ और जब वास्तविक उपकरणों में परीक्षण।
मैं एक स्थानीय HTML5
आवेदन (अंदर संपत्ति फ़ोल्डर) निम्नलिखित कार्यक्षमता
- लॉगिन (2 कदम प्रमाणीकरण) के साथ की है।
- प्रमाणीकरण के आधार पर वस्तुओं की एक सूची दिखाएं।
समस्या:
लॉगिन अनुरोध करने के बाद, सर्वर सत्र के साथ कुकी देता है। एपीआई 21 या ऊपर के साथ वास्तविक उपकरणों का उपयोग करते समय यह कुकी Webview
में संग्रहीत नहीं होती है। अगर मैं अनुकरणकर्ताओं (इस मामले में जीनमोशन) का उपयोग करता हूं, तो कुकीज़ ठीक तरह से संग्रहित होती हैं।
अधिक जानकारी:
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Set-Cookie: JSESSIONID=4D169E8656DBEDFFA4D17FE8D436A5BA; Expires=Fri, 19-Feb-2016 14:27:55 GMT; Path=/; HttpOnly
Content-Type: application/json;charset=UTF-8
Content-Length: 43
Date: Fri, 19 Feb 2016 14:17:55 GMT
कुकी उपकरणों में संग्रहीत नहीं है:
POST http://myServer/j_spring_security_check HTTP/1.1
Proxy-Connection: keep-alive
Content-Length: 101
access-control-allow-origin: *
accept: application/json
access-control-allow-credentials: true
User-Agent: Framework/1.5.0 (Linux; U; Android 6.0.1; Nexus 5X Build/MMB29Q) App/0.1.1
Origin: file://
content-type: application/x-www-form-urlencoded
Accept-Language: en-US
X-Requested-With: app.package
Host: myServer
निम्नलिखित प्रतिक्रिया के साथ :
प्रमाणन करने के लिए अनुरोध के बाद हेडर गया है एपीआई 21 या अधिक के साथ।
इस झंडे ऐप में सक्षम हैं:: वही अनुरोध/प्रतिक्रिया उपकरणों + सभी emulators
स्पष्टीकरण के बाकी हिस्सों में ठीक काम करता है
android.webkit.CookieManager.setAcceptFileSchemeCookies(true);
(पहले कुकी मैनेजर या वेबव्यू तत्काल है, क्योंकि documentation कहता है)
if(VERSION.SDK_INT >= 21) {
CookieManager.getInstance().setAcceptThirdPartyCookies(this.nativeWebView, true);
}
प्रमाणीकरण करने के बाद, मैं कुकीज़ डेटा स्टोर और जांच "hasCookies" विधि का उपयोग करते हैं, तो मैं
false
मिलता है।दो चरण ऑथ सेवा वास्तव में एक ही अंतराल से 3 अलग-अलग पथों को कॉल करती है। कुकीज़ में से कोई भी नहीं जो कि इस सेवा को उत्पन्न करने वाली प्रतिक्रिया संग्रहीत की जाती है। मुझे नहीं पता कि यह प्रासंगिक है या नहीं।
सरल प्रमाणीकरण (एक अलग सर्वर पर) करते समय, कुकीज सभी डिवाइस अनुकरणकर्ताओं में ठीक से संग्रहीत होते हैं।
मैं कोणीय 1 का उपयोग कर रहा हूं।5
मुझे पता है कि सेवा
https
के बजायhttp
का उपयोग कर रही है। भविष्य में इसे हल किया जाएगा।मुझे कंसोल में कोई त्रुटि संदेश नहीं मिलता है।
सवाल:
वहाँ WebViews में किसी भी आंतरिक सुरक्षा उपाय है कि कुकीज़ को अवरुद्ध के भंडारण? यह अनुकरणकर्ताओं (जो रूट डिवाइस हैं) पर क्यों काम करता है और वास्तविक उपकरणों में नहीं? यह वास्तव में मुझे खराब करता है।
हां, यह एक महत्वपूर्ण डेटा था: HTTP अनुरोध windows.fetch का उपयोग करके किया गया था ... – Jbeerdev
इस मामले में "शामिल" काम करता है। – Jbeerdev