2017-03-10 11 views
5

के माध्यम से ऐप ट्रांसपोर्ट सिक्योरिटी ब्लॉक रूटिंग मेरा आईओएस ऐप (स्विफ्ट और रिएक्ट नेटिव में लिखा गया) में एक कस्टम यूआरएल योजना है जो मुझे ऐप से रूट करने की अनुमति देती है। सफारी इस myappscheme://https://www.mywebsite.com/somematerial की तरह। अगर मैं अपने अनुप्रयोग में अनुप्रयोग परिवहन सुरक्षा को सक्षम, कस्टम url योजना के माध्यम से मार्ग अवरुद्ध है और मैं यह संदेश प्राप्त:कस्टम यूआरएल योजना

अनुप्रयोग परिवहन सुरक्षा एक क्लियर HTTP (http: //) अवरुद्ध कर दिया है संसाधन लोड के बाद से यह है असुरक्षित। अस्थायी अपवादों को के माध्यम से आपके ऐप की Info.plist फ़ाइल के माध्यम से कॉन्फ़िगर किया जा सकता है।

हालांकि, अगर मैं एटीएस अक्षम करता हूं, ऐप रूट अपेक्षित के रूप में। मैं अपने ऐप में http के माध्यम से किसी भी लिंक तक नहीं पहुंच रहा हूं और अपने रूटिंग में मैं हमेशा https के माध्यम से डेटा लाता हूं। इसलिए, मुझे नहीं पता कि एटीएस इस रूटिंग को क्यों रोक रहा है। क्या आपको पता है कि मुझे अपनी यूआरएल योजना के बारे में कुछ अतिरिक्त जानकारी प्रदान करनी है?

कृपया Info.plist में मेरी एटीएस विन्यास देखें:

<key>NSAppTransportSecurity</key> 
<dict> 
    <key>NSAllowsArbitraryLoadsInWebContent</key> 
    <true/> 
    <key>NSExceptionDomains</key> 
    <dict> 
     <key>localhost</key> 
     <dict> 
      <key>NSIncludesSubdomains</key> 
      <true/> 
      <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key> 
      <true/> 
     </dict> 
    </dict> 
</dict> 

मैं भी अपने कस्टम url योजना श्वेत सूची में है:

<key>LSApplicationQueriesSchemes</key> 
<array> 
    <string>myappscheme</string> 
</array> 
+0

'localhost' के बजाय 'server.local' –

+0

@Floler सुझाव के लिए धन्यवाद लेकिन यह काम नहीं करता है। – inga

उत्तर

1

इस समस्या का समाधान हो गया है। मैं अंत बिंदु मैं मार रहा था लॉग आउट और जाँच अगर यह टर्मिनल में कार्य करके एटीएस की शर्तों को पूरा:

nscurl --ats-diagnostics https://www.example.com/ 

यह पता चला कि खास उप डोमेन मैं कोशिश कर रहा था सब एटीएस आवश्यकताओं को प्राप्त करना विफल हुआ। मेरी सर्वर टीम ने इस मुद्दे को ठीक कर दिया है और एंडपॉइंट को सुरक्षित बना दिया है।

0

मुझे लगता है कि समस्या यह है मूल निवासी प्रतिक्रिया के साथ, आपको लगता है कि उल्लेख किया आप सफारी को कस्टम लिंक के स्रोत के रूप में उपयोग करते हैं और शायद इसका मतलब यह है कि आप सिम्युलेटर में अपने ऐप & कस्टम रूटिंग को डीबग करने का प्रयास कर रहे हैं, इसलिए हो सकता है कि आपकी समस्या प्रतिक्रिया मूल से संबंधित हो। यदि आपके पास वास्तविक डिवाइस पर एक ही व्यवहार है, तो वास्तविक मूल ऑफ़लाइन काम करता है, तो कृपया अपना प्रश्न अपडेट करें।

अस्थायी रूप से अक्षम अनुप्रयोग परिवहन सुरक्षा (एटीएस) अपने Info.plist फाइल करने के लिए NSAllowsArbitraryLoads प्रविष्टि जोड़कर। चूंकि एटीएस असुरक्षित HTTP अनुरोधों को आईपी पते पर अनुमति नहीं देता है, इसलिए आपको डिवाइस पर चलाने के लिए पूरी तरह से अक्षम करना होगा। यह डिवाइस पर विकास के लिए केवल एक आवश्यकता है, और जब तक कि आप किसी समस्या को हल नहीं कर सकते हैं, तो को उत्पादन निर्माण के लिए एटीएस सक्षम होना चाहिए। अधिक जानकारी के लिए, एटीएस को कॉन्फ़िगर करने पर this post देखें।

React Native Documentation - Running On Device

+0

सुझाव के लिए धन्यवाद लेकिन यह मामला नहीं है। मेरे पास केवल स्विफ्ट में मेरे ऐप का पुराना संस्करण है और कस्टम यूआरएल योजना के माध्यम से रूटिंग भी काम नहीं करती है अगर मैं मनमाने ढंग से भार की अनुमति नहीं देता हूं। मैं सफारी के माध्यम से डीबगिंग नहीं कर रहा हूं, मैं यूआईपीप्लिकेशंस के साथ अपने स्विफ्ट कोड से यूआरएल खोल रहा हूं। शेर।openURL (myappscheme: //mywebsite.com/som ematerial)। मेरे पास सिम्युलेटर और डिवाइस पर एक ही समस्या है। – inga

0

कॉन्फ़िगर info.plist सेटिंग।

आप एक विशिष्ट डोमेन की तरह जोड़ सकते हैं:

<dict> 
    <key>NSAllowsArbitraryLoads</key> 
    <true/> 
    <key>NSExceptionDomains</key> 
    <dict> 
     <key>www.google.com</key> 
     <dict> 
      <key>NSIncludesSubdomains</key> 
      <true/> 
      <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key> 
      <true/> 
      <key>NSTemporaryExceptionMinimumTLSVersion</key> 
      <string>TLSv1.1</string> 
     </dict> 
    </dict> 
</dict> 
+0

सुझाव के लिए धन्यवाद लेकिन मैं अपने डोमेन को अपवाद के रूप में सूचीबद्ध नहीं करना चाहता हूं। मैं एटीएस आवश्यकताओं को पूरा करना चाहता हूं। – inga

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