2015-10-06 5 views
11

Ich möchte eine HTML-basierte Website als iPhone-App mit Xcode Version 7.0.1 bündeln, alles funktioniert gut und mein einziges Problem ist, dass wenn ich die Anwendung auf iPhone 4s testen, es keine Bilder zeigt, die über http zugegriffen werden. Ich könnte jedoch Bilder von einer anderen Website zugreifen, die https Zugriff auf seine Bilder bieten.Wie fügt man NSExceptionDomains zu der xcode Version 7.0.1 hinzu?

Gibt es eine Möglichkeit, dem Bund http-Unterstützung hinzuzufügen?

aktualisieren

Ich habe ein NSExceptionDomains meine plist-Datei, aber ich habe immer noch das gleiche Problem

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
<plist version="1.0"> 
<dict> 
    <key>CFBundleDevelopmentRegion</key> 
    <string>English</string> 
    <key>CFBundleDisplayName</key> 
    <string>My Project</string> 
    <key>CFBundleExecutable</key> 
    <string>${EXECUTABLE_NAME}</string> 
    <key>CFBundleIcons</key> 
    <dict/> 
    <key>CFBundleIcons~ipad</key> 
    <dict/> 
    <key>CFBundleIdentifier</key> 
    <string>com.myproject.names</string> 
    <key>CFBundleInfoDictionaryVersion</key> 
    <string>1.0</string> 
    <key>CFBundleName</key> 
    <string>${PRODUCT_NAME}</string> 
    <key>CFBundlePackageType</key> 
    <string>APPL</string> 
    <key>CFBundleShortVersionString</key> 
    <string>1.0.1</string> 
    <key>CFBundleSignature</key> 
    <string>myproject</string> 
    <key>CFBundleVersion</key> 
    <string>1.1</string> 
    <key>LSRequiresIPhoneOS</key> 
    <true/> 
    <key>NSAppTransportSecurity</key> 
    <dict> 
     <key>NSAllowsArbitraryLoads</key> 
     <true/> 
    </dict> 
    <key>UIMainStoryboardFile</key> 
    <string>Main_iPhone</string> 
    <key>UIMainStoryboardFile~ipad</key> 
    <string>Main_iPad</string> 
    <key>UIRequiresFullScreen</key> 
    <string>YES</string> 
    <key>UIStatusBarHidden</key> 
    <false/> 
    <key>UIStatusBarStyle</key> 
    <string>UIStatusBarStyleLightContent</string> 
    <key>UISupportedInterfaceOrientations</key> 
    <array> 
     <string>UIInterfaceOrientationPortrait</string> 
    </array> 
    <key>UISupportedInterfaceOrientations~ipad</key> 
    <array> 
     <string>UIInterfaceOrientationPortrait</string> 
    </array> 
    <key>UIViewControllerBasedStatusBarAppearance</key> 
    <false/> 
    <key>NSAppTransportSecurity</key> 
    <dict> 
     <key>NSExceptionDomains</key> 
     <dict> 
      <key>appanalytics.embarcadero.com</key> 
      <dict> 
       <key>NSExceptionAllowsInsecureHTTPLoads</key><true/> 
      </dict> 
     </dict> 
    </dict> 
</dict> 
</plist> 

ich auch auf diesen question

<dict> 
     <key>NSExceptionDomains</key> 
     <dict> 
      <key>mydomain.com</key> 
      <dict> 
       <!--Include to allow subdomains--> 
       <key>NSIncludesSubdomains</key> 
       <true/> 
       <!--Include to allow HTTP requests--> 
       <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key> 
       <true/> 
       <!--Include to specify minimum TLS version--> 
       <key>NSTemporaryExceptionMinimumTLSVersion</key> 
       <string>TLSv1.1</string> 
      </dict> 
     </dict> 
    </dict> 

folgende anhand versucht Aktualisieren

Ich habe den Code in here erwähnt, aber immer noch das gleiche Problem.

aktualisiert

Wie vorgeschlagen, änderte es den plist zu folgenden, aber immer noch das gleiche Problem hat. Außerdem habe ich http: // zu Werten von Schlüssel-Tags vergebens hinzugefügt.

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
<plist version="1.0"> 
<dict> 
    <key>CFBundleDevelopmentRegion</key> 
    <string>English</string> 
    <key>CFBundleDisplayName</key> 
    <string>My Project</string> 
    <key>CFBundleExecutable</key> 
    <string>${EXECUTABLE_NAME}</string> 
    <key>CFBundleIcons</key> 
    <dict/> 
    <key>CFBundleIcons~ipad</key> 
    <dict/> 
    <key>CFBundleIdentifier</key> 
    <string>com.myproject.names</string> 
    <key>CFBundleInfoDictionaryVersion</key> 
    <string>1.0</string> 
    <key>CFBundleName</key> 
    <string>${PRODUCT_NAME}</string> 
    <key>CFBundlePackageType</key> 
    <string>APPL</string> 
    <key>CFBundleShortVersionString</key> 
    <string>3.1.6</string> 
    <key>CFBundleSignature</key> 
    <string>myproject</string> 
    <key>CFBundleVersion</key> 
    <string>1.2</string> 
    <key>LSRequiresIPhoneOS</key> 
    <true/> 
    <key>UIMainStoryboardFile</key> 
    <string>Main_iPhone</string> 
    <key>UIMainStoryboardFile~ipad</key> 
    <string>Main_iPad</string> 
    <key>UIRequiresFullScreen</key> 
    <string>YES</string> 
    <key>UIStatusBarHidden</key> 
    <false/> 
    <key>UIStatusBarStyle</key> 
    <string>UIStatusBarStyleLightContent</string> 
    <key>UISupportedInterfaceOrientations</key> 
    <array> 
     <string>UIInterfaceOrientationPortrait</string> 
    </array> 
    <key>UISupportedInterfaceOrientations~ipad</key> 
    <array> 
     <string>UIInterfaceOrientationPortrait</string> 
    </array> 
    <key>UIViewControllerBasedStatusBarAppearance</key> 
    <false/> 
    <key>NSAppTransportSecurity</key> 
    <dict> 
     <key>NSExceptionDomains</key> 
     <dict> 
      <key>myproject.com.ca</key> 
      <dict> 
       <key>NSExceptionAllowsInsecureHTTPLoads</key> 
       <true/> 
      </dict> 
      <key>myproject.com.ca</key> 
      <dict> 
       <key>NSIncludesSubdomains</key> 
       <true/> 
       <key>NSExceptionAllowsInsecureHTTPLoads</key> 
       <true/> 
      </dict> 
     </dict> 
    </dict> 
</dict> 
</plist> 
+0

besuchen Sie bitte: https://nabla-c0d3.github.io/blog/2015/06/16/ios9-security-privacy/ –

Antwort

10

Erstens verfügt Ihr Info.plist über zwei separate NSAppTransportSecurity-Schlüssel/Wert-Paare. Sie sollten das beheben, so dass es nur das eine Paar gibt.

Ihre Frage sagt nicht, aus welchen Domains Ihre Bilder geladen sind. Es wäre einfacher, eine konkrete Antwort zu geben, wenn Sie diese Informationen hinzufügen könnten.

Wenn zum Beispiel Ihre Bilder von example.com oder Sub-Domains geladen werden, eine Ausnahme hinzufügen könnte wie folgt:

<key>NSAppTransportSecurity</key> 
<dict> 
    <key>NSExceptionDomains</key> 
    <dict> 
     <key>appanalytics.embarcadero.com</key> 
     <dict> 
      <key>NSExceptionAllowsInsecureHTTPLoads</key> 
      <true/> 
     </dict> 
     <key>example.com</key> 
     <dict> 
      <key>NSIncludesSubdomains</key> 
      <true/> 
      <key>NSExceptionAllowsInsecureHTTPLoads</key> 
      <true/> 
     </dict> 
    </dict> 
</dict> 

Wenn Sie im Voraus nicht wissen, was die Bilder Domains werden von geladen werden, dann können Sie stattdessen erlaubt HTTP-Zugriff auf alle Domänen:

<key>NSAppTransportSecurity</key> 
<dict> 
    <key>NSAllowsArbitraryLoads</key> 
    <true/> 
    <key>NSExceptionDomains</key> 
    <dict> 
     <key>appanalytics.embarcadero.com</key> 
     <dict> 
      <key>NSExceptionAllowsInsecureHTTPLoads</key> 
      <true/> 
     </dict> 
    </dict> 
</dict> 

Beachten Sie, dass, obwohl die Aufnahme von appanalytics.embarcadero.com in diesem zweiten Beispiel technisch überflüssig ist, wird empfohlen, dass Sie ATS Ausnahmen für alle bekannten Domänen angeben th auf Ihre App zugreifen.

+0

danke, ich weiß Domäne der Bilder und fügte hinzu, dass, wie Sie vorgeschlagen, aber nicht Hilfe, ich habe die Frage aktualisiert. – Jack

+0

Wenn Sie Ihren letzten aktualisierten Plist betrachten, haben Sie mein Beispiel zu wörtlich genommen, da Sie zwei unterschiedliche Einträge für 'myproject.com.ca' in NSExceptionDomains enthalten. Sie sollten nur einen Eintrag für jede Domäne mit den für diese Domäne erforderlichen Ausnahmen haben. – adurdin

1

Sie können dieses Tutorial auf lesen, wie App Transport Security konfigurieren oder Sie könnten nur durch Zugabe von Dictionary „NSAppTransportSecurity“ mit einem Booleschen Schlüssel mit dem Namen „NSAllowsArbitraryLoads“ mit dem Wert „JA“ in Ihrem info.plist alles wie bisher ermöglichen.

1

Ihr Schlüssel Name ist NSExceptionAllowsInsecureHTTPLoads aber es sollte NSTemporaryExceptionAllowsInsecureHTTPLoads

auch sein, haben Sie versucht,

<key>NSExceptionRequiresForwardSecrecy</key> 
<false/> 

ATS Domain Schlüssel hinzufügen?
Einige Domänen erfordert es.

Verwandte Themen