ios - संसाधन लोड नहीं किया जा सका क्योंकि ऐप ट्रांसपोर्ट सिक्योरिटी पॉलिसी के लिए सुरक्षित कनेक्शन के उपयोग की आवश्यकता होती है




nsurlconnection nsurlsession (12)

IOS 10.x और Swift 3.x के लिए [नीचे के संस्करण भी समर्थित हैं] बस 'info.plist' में निम्नलिखित पंक्तियाँ जोड़ें।

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>

मैं उस समस्या का सामना कर रहा हूं जब मैंने अपने Xcode को 7.0 या iOS 9.0 में अपडेट किया है। किसी तरह यह मुझे शीर्षक वाली त्रुटि देने लगा

"संसाधन लोड नहीं किया जा सका क्योंकि ऐप ट्रांसपोर्ट सिक्योरिटी पॉलिसी को एक सुरक्षित कनेक्शन के उपयोग की आवश्यकता है"

Webservice विधि:

-(void)ServiceCall:(NSString*)ServiceName :(NSString *)DataString
{
NSURLSessionConfiguration *sessionConfiguration = [NSURLSessionConfiguration defaultSessionConfiguration];
    [sessionConfiguration setAllowsCellularAccess:YES];
    [sessionConfiguration setHTTPAdditionalHeaders:@{ @"Accept" : @"application/json" }];
    NSURLSession *session = [NSURLSession sessionWithConfiguration:sessionConfiguration];

    NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"%@",ServiceURL]];
    NSLog(@"URl %@%@",url,DataString);
    // Configure the Request
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
    [request setValue:[NSString stringWithFormat:@"%@=%@", strSessName, strSessVal] forHTTPHeaderField:@"Cookie"];
    request.HTTPBody = [DataString dataUsingEncoding:NSUTF8StringEncoding];
    request.HTTPMethod = @"Post";

    // post the request and handle response
    NSURLSessionDataTask *postDataTask = [session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error)
                                          {
                                              // Handle the Response
                                              if(error)
                                              {
                                                  NSLog(@"%@",[NSString stringWithFormat:@"Connection failed: %@", [error description]]);

                                                  // Update the View
                                                  dispatch_async(dispatch_get_main_queue(), ^{

                                                      // Hide the Loader
                                                      [MBProgressHUD hideHUDForView:[[UIApplication sharedApplication] delegate].window animated:YES];


                                                  });
                                                  return;
                                              }
                                              NSArray * cookies = [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookiesForURL:request.URL];
                                              for (NSHTTPCookie * cookie in cookies)
                                              {
                                                  NSLog(@"%@=%@", cookie.name, cookie.value);
                                                  strSessName=cookie.name;
                                                  strSessVal=cookie.value;

                                              }

                                              NSString *retVal = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
}];
[postDataTask resume];

}

यह सेवा Xcode के पूर्व संस्करणों और iOS पिछले संस्करणों के लिए ठीक चल रही है लेकिन जब मैंने Xcode 7.0 को iOS 9.0 पर अपडेट किया है, तो उसने मुझे इस तरह की समस्या का सामना करना शुरू कर दिया जब मैं उपरोक्त वेब सेवा पद्धति को कॉल कर रहा हूं। लॉग त्रुटि जो मुझे मिल रही है:

कनेक्शन विफल रहा: त्रुटि डोमेन = NSURLErrorDomain कोड = -1022 "ऐप ट्रांसपोर्ट सुरक्षा नीति को सुरक्षित कनेक्शन के उपयोग की आवश्यकता होने के कारण संसाधन लोड नहीं किया जा सका।" UserInfo = {NSUnderlyingError = 0x7fada0f31880 {एरर डोमेन = kCFErrorDomainCFNetwork कोड = -1022 "(null)"}, NSErrorFailingURLStringKey = MyServiceURL , NSErrorFailingURLKey = MyService = MyService = MyService = My Service कनेक्शन।}

मैंने निम्नलिखित प्रश्नों और उत्तरों की कोशिश की है, लेकिन वहां कोई परिणाम नहीं मिला, क्या कोई अग्रिम विचार है कि मैं उस सेवा कॉल त्रुटि को कैसे निकाल सकता हूं?

  1. संसाधन लोड नहीं किया जा सका ios9 है
  2. ऐप ट्रांसपोर्ट सिक्योरिटी Xcode 7 बीटा 6
  3. https://stackoverflow.com/a/32609970

IOS 9.0 या बाद के संस्करण में और OS X v10.11 और बाद में परिवहन सुरक्षा प्रदान की जाती है।

तो डिफ़ॉल्ट रूप से केवल https कॉल केवल ऐप्स में अनुमत हैं। अनुप्रयोग परिवहन सुरक्षा को बंद करने के लिए info.plist फ़ाइल में निम्न पंक्तियाँ जोड़ें ...

<key>NSAppTransportSecurity</key>
  <dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
  </dict>

अधिक जानकारी के लिए:
https://developer.apple.com/library/content/documentation/General/Reference/InfoPlistKeyReference/Articles/CocoaKeys.html#//apple_ref/doc/uid/TP40009251-SW33


iOS 9 (मई) डेवलपर्स को ऐप ट्रांसपोर्ट सिक्योरिटी का विशेष रूप से उपयोग करने के लिए मजबूर करता है। मैं इसे कहीं बेतरतीब ढंग से सुनता हूं इसलिए मुझे नहीं पता कि यह खुद सच है या नहीं। लेकिन मुझे इस पर संदेह है और इस निष्कर्ष पर पहुंचे हैं:

IOS 9 पर चलने वाला ऐप (शायद) अब SSL के बिना Meteor सर्वर से कनेक्ट नहीं होगा।

इसका मतलब है कि अब चलने वाला उल्का रन ios या उल्का चलाने वाला ios- उपकरण (शायद?) अब काम नहीं करेगा।

एप्लिकेशन के info.plist में, NSAppTransportSecurity [Dictionary] लिए एक प्रमुख NSAllowsArbitraryLoads [Boolean] YES या Meteor पर सेट होने की आवश्यकता है जो जल्द ही अपने localhost server लिए https का उपयोग करने की आवश्यकता है।


आपको बस अपने URL में HTTPS और HTTP का उपयोग करने की आवश्यकता नहीं है और यह काम करेगा


मैं उल्लेख किए गए विकल्पों में से कई के संयोजन के साथ इसे हल करने में कामयाब रहा। मैं उन सभी चीजों की एक चेकलिस्ट शामिल करूंगा जिन्हें मुझे काम करने के लिए करना था।

संक्षेप में:

  1. मेरे वॉच एक्सटेंशन (मेरी वॉच ऐप नहीं) के लिए NSAllowsArbitraryLoads सेट करें।
  2. सुनिश्चित करें कि मैं https का उपयोग कर रहा था न कि http

पहला कदम:

सबसे पहले और सबसे स्पष्ट रूप से मुझे अपने वॉच एक्सटेंशन की जानकारी में एक NSAppTransportSecurity कुंजी को एक शब्दकोश के रूप में जोड़ना था। एक उपकुंजी के साथ एक उपकुंजी जिसे NSAllowsArbitraryLoads कहा जाता है, सच है। इसे केवल वॉच एक्सटेंशन में सेट करें न कि वॉच ऐप के प्लिस्ट में। यद्यपि ध्यान दें कि यह सभी कनेक्शनों को अनुमति देता है और असुरक्षित हो सकता है।

या

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>

दूसरा चरण:

तब मुझे यह सुनिश्चित करना था कि मैं जिस url को लोड करने की कोशिश कर रहा था वह https था न कि केवल http । किसी भी यूआरएल के लिए जो अभी भी http मैं इस्तेमाल किया गया था:

स्विफ्ट :

let newURLString = oldURLString.stringByReplacingOccurrencesOfString("http", withString: "https")

Obj सी:

NSString *newURLString = [oldURLString stringByReplacingOccurrencesOfString:@“http” withString:@“https”];


मैंने "NSAllowsArbiteathLoads" विकल्प के बजाय एक वर्ष के हस्ताक्षरित प्रमाण पत्र का उपयोग करके एक स्व-होस्ट किए गए पार्स-सर्वर के मामले में इस मुद्दे को हल किया है।

किसी भी नोड.जेएस सर्वर के रूप में पार्स सर्वर एक सार्वजनिक https url प्रस्तुत करता है जिसे आपको निर्दिष्ट करना होगा। उदाहरण के लिए:

parse-server --appId --masterKey --publicServerURL https://your.public.url/some_nodejs

मेरी कॉन्फ़िगरेशन फ़ाइलों को एक नज़र देने के लिए स्वतंत्र महसूस करें


मैंने प्लिस्ट फाइल के रूप में हल किया है।

एक NSAppTransportSecurity जोड़ें: शब्दकोश।

उपकुंजी को "NSAllowsArbiteathLoads" नाम से बूलियन जोड़ें: हाँ


यदि आप Xcode 8.0 और स्विफ्ट 3.0 या 2.2 का उपयोग कर रहे हैं


संसाधन लोड नहीं किया जा सका क्योंकि ऐप ट्रांसपोर्ट सिक्योरिटी पॉलिसी को स्विफ्ट 4.03 में काम करने वाले एक सुरक्षित कनेक्शन के उपयोग की आवश्यकता है।

स्रोत कोड और पेस्ट के रूप में अपना pList.info खोलें:

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>

स्विफ्ट 4 में आप उपयोग कर सकते हैं

-> जाओ Info.plist

-> सूचना गुण सूची पर क्लिक करें

-> शब्दकोश के रूप में ऐप परिवहन सुरक्षा सेटिंग्स जोड़ें

-> प्लस आइकन ऐप ट्रांसपोर्ट सिक्योरिटी सेटिंग्स पर क्लिक करें

-> अनुमति दें मनमाना लोड सेट हाँ

मधुर छवि दिखती है


अगर आप Xcode 8.0 से 8.3.3 और स्विफ्ट 2.2 से 3.0 का उपयोग कर रहे हैं

मेरे मामले में URL http: // से https: // में बदलने की जरूरत है (अगर काम नहीं कर रहा है तो कोशिश करें)

Add an App Transport Security Setting: Dictionary.
Add a NSAppTransportSecurity: Dictionary.
Add a NSExceptionDomains: Dictionary.
Add a yourdomain.com: Dictionary.  (Ex: .com)

Add Subkey named " NSIncludesSubdomains" as Boolean: YES
Add Subkey named " NSExceptionAllowsInsecureHTTPLoads" as Boolean: YES


सुनिश्चित करें कि आपने सही info.plist फ़ाइल को बदल दिया है

यह दूसरी बार है जब मैं इस मुद्दे पर समय बर्बाद कर रहा हूं, क्योंकि मैंने ध्यान नहीं दिया कि मैं MyProjectNameUITests के तहत info.plist बदल रहा हूं।





xcode7