2017-12-09 91 views
13

एंड्रॉइड पर क्रोम 63 की रिलीज के बाद, 6 दिसंबर 2017 को, मुझे अपनी कंपनियों कॉर्डोवा आधारित एंड्रॉइड ऐप में समस्या आई है। इस ऐप में आईफ्रेम शामिल हैं जो उपयोगकर्ताओं को ऐप के भीतर से मेरी कंपनियों ईकामर्स वेबसाइट के हिस्सों पर नेविगेट करने की अनुमति देता है।आईफ़्रेम के साथ एंड्रॉइड कॉर्डोवा ऐप क्रोम 63 कोई अनुरोध शीर्षलेख कुकीज़

IFrames में लोड किए गए पृष्ठों के बीच नेविगेशन अब अनुरोध शीर्षलेख में कोई कुकी जानकारी नहीं भेजता है।

कुकी में संग्रहीत सत्र आईडी जैसे सूचना अगले पृष्ठ पर पारित नहीं की जाती है, जो बदले में अगले पृष्ठ को एक नया उपयोगकर्ता सत्र शुरू करने का कारण बनती है!

अजीब बात यह है कि हालांकि किसी भी AJAX कॉल IFrames (जैसे टोकरी में आइटमों की संख्या को पुनर्प्राप्त करने के लिए) में एक पृष्ठ के भीतर पूर्ववर्ती है और संपत्ति अनुरोध (सीएसएस जेएस, छवि फ़ाइलें इत्यादि) अनुरोध में कुकी जानकारी भेजते हैं हेडर ठीक है। इन शीर्षकों में सत्र आईडी पृष्ठों के बीच समान है, जो सत्र दृढ़ता दर्शाती है।

कुकीज ठीक से बनाए जा रहे हैं और मैं उन्हें डोमेन डोमेन के तहत एप्लिकेशन पैनल के भीतर क्रोम डेवलपर टूल का उपयोग करते समय देख सकता हूं। वे सिर्फ अगले पृष्ठ पर नहीं जा रहे हैं।

मुझे एंड्रॉइड 7.1.1 डिवाइस पर इस समस्या का अनुभव हुआ। जब मैं इस डिवाइस पर क्रोम ऐप को अक्षम करता हूं तो ऐप में IFrames में कुकी अनुरोध हेडर फिर से ठीक काम करना शुरू कर देते हैं, संभवतः कॉर्डोवा वेबव्यू अब अक्षम होने पर क्रोम का उपयोग नहीं कर रहा है?

क्या किसी को पता है कि इस समस्या का कारण क्या हो सकता है? क्या यह क्रोम 63 में समान साइट कुकीज़ या सख्त साइट अलगाव परिवर्तन या अन्य सुरक्षा संबंधी परिवर्तनों से संबंधित कुछ भी हो सकता है? https://bugs.chromium.org/p/chromium/issues/detail?id=634311

Webview हालांकि तीसरे पक्ष कुकीज़ Cordova पुस्तकालय की SystemCookieManager कक्षा में सक्षम किया है, करता है (कॉर्डोबा एंड्रॉयड 6.4.0):

मुद्दा यह क्रोमियम बग है कि अक्टूबर वर्ष 2016 तय किया गया था के समान प्रतीत होता है

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { 
    cookieManager.setAcceptThirdPartyCookies(webView, true);    
} 

क्षमा करें अगर मैंने कुछ भी स्पष्ट रूप से निर्दिष्ट नहीं किया है। अगर कोई इस मुद्दे से मदद कर सकता है तो मुझे अतिरिक्त जानकारी प्रदान करने में खुशी होगी।

+0

हम एक ही मुद्दा मिल गया है, विवरण के लिए धन्यवाद। ऐसा लगता है कि कॉर्डोवा में आईफ्रेम का उपयोग करने के लिए भविष्य का सबूत नहीं है, यह सुरक्षा प्रतिबंधों को जारी रखेगा। हम Themeablebrowser या कॉर्डोवा inappbrowser का उपयोग कर देख रहे हैं। – Jerem

+0

यह क्रोम बनाम सिस्टम वेबव्यू चीज़ प्रतीत नहीं होता है, लेकिन पूरी तरह से संस्करण से संबंधित है। मेरे फोन पर, मेरे पास सिस्टम वेबव्यू v63 और क्रोम v62 है। इस सेटिंग के साथ, ऐप वर्णित समस्या से पीड़ित होगा। यदि मैं सिस्टम वेबव्यू के अपडेट को हटा देता हूं, तो समस्या गायब हो जाती है। मेरे पास क्रोम को v63 पर अपडेट करने के लिए मजबूर करने का कोई तरीका नहीं है, v62 नवीनतम संस्करण है जिसे मैं इंस्टॉल कर सकता हूं। तो मैं निश्चित रूप से नहीं बता सकता, उस मामले में कौन सा इंजन/संस्करण उपयोग किया जाता है। –

उत्तर

2

यहां कॉर्डोवा के बिना इस मुद्दे को पुन: उत्पन्न करने का एक तरीका है। कुकीज़ का परीक्षण करने के लिए यह http://httpbin.org/cookies/set?k2=v2&k1=v1 का उपयोग करता है। Android System WebView बनाम 63 के साथ कुकीज़ नहीं भेजी जाती हैं। पिछले संस्करणों के साथ वे भेजे जाते हैं। मुझे उम्मीद है कि यह सवाल का जवाब खोजने में मदद कर सकता है। यहाँ पूर्ण एंड्रॉयड परियोजना के लिए एक लिंक है: https://www.dropbox.com/s/s53wfy71uou11rh/test-webview.zip?dl=0

MainActivity.java

package com.example.mihai.twv; 

import android.os.Build; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.webkit.CookieManager; 
import android.webkit.WebView; 

import java.io.InputStream; 

public class MainActivity extends AppCompatActivity { 

    WebView mWebView; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     initWebView(); 
     loadWebView(); 
    } 

    private void initWebView() { 
     mWebView = (WebView) findViewById(R.id.webView); 
     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { 
      WebView.setWebContentsDebuggingEnabled(true); 
     } 
     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { 
      CookieManager.getInstance().setAcceptThirdPartyCookies(mWebView, true); 
     } 
    } 

    private void loadWebView() { 
     String url = "http://httpbin.org"; 
     String html = getLocalFileContents("html/main.html"); 
     mWebView.loadDataWithBaseURL(url, html, "text/html", "UTF-8", null); 
    } 

    private String getLocalFileContents(String filepath) { 
     String response = ""; 

     try { 
      InputStream is = getAssets().open(filepath); 
      int size = is.available(); 

      StringBuilder builder = new StringBuilder(); 

      byte[] buffer = new byte[size]; 
      while (is.read(buffer) != -1) { 
       builder.append(new String(buffer, "UTF-8")); 
      } 
      is.close(); 
      response = builder.toString(); 
     } catch (Exception e) { 
     } 
     return response; 
    } 
} 

html/main.html (परिसंपत्तियों में फ़ोल्डर)

<html> 
<head> 
    <base href="file:///android_asset/html/"> 
    <link type="text/css" rel="stylesheet" href="../css/main.css" /> 
</head> 
<body> 
    <iframe src="http://httpbin.org/cookies/set?k1=v1&k2=v2" frameborder="0"></iframe> 
</body> 

सीएसएस/मुख्य।(संपत्ति फ़ोल्डर में)

html, 
body, 
iframe { 
    width: 100%; 
    height: 100%; 
} 
+0

ऐसा लगता है कि एंड्रॉइड सिस्टम वेबव्यू 63.0.3239.107 अपडेट में तय किया गया है। एंड्रॉइड 6.0.1 – mihai1990

9

सीएसएस इस बग दायर किया था और in the Chromium Bug tracker संबोधित किया। क्रोमियम देवताओं के अनुसार, चीजों के ऐप पक्ष से हम कुछ भी नहीं कर सकते हैं।

+3

के साथ सैमसंग जे 5 (एसएम-जे 500 एच) पर परीक्षण किया गया यह बग क्रोम/एंड्रॉइड वेबव्यू (संस्करण 63.0.3239.111) की नवीनतम रिलीज के साथ तय किया गया है। जिन मुद्दों को हम अपने ऐप्स के साथ अनुभव कर रहे थे, उनका हल हो गया है। – user1491571

-1

यदि आपका आईफ़्रेम https url पर ब्राउज़ कर रहा है, तो क्रोम 63 सिमेंटेक द्वारा जेनरेट किए गए SSL प्रमाणपत्र से संबंधित सुरक्षा चेतावनी उत्पन्न करता है। Iframe के भीतर कोई और अधिक नेविगेशन कॉर्डोबा आवेदन पर स्वीकार किया जाता है

अधिक जानकारियां लिए नीचे देखें: https://security.googleblog.com/2017/09/chromes-plan-to-distrust-symantec.html

0

यह Chrome में बग था, यह तय किया गया है। मैंने क्रोम को दोबारा अपडेट किया और यह अब मेरे डिवाइस पर ठीक काम करता है।

क्या हम इस से सीख सकते हैं कि Cordova अन्य एप्लिकेशन पर निर्भर करता है ...

संबंधित मुद्दे