トランスポートセキュリティがクリアテキストHTTPをブロックしました


1451

info.plist次のエラーメッセージに従って、HTTPモードを有効にするためにどの設定を行う必要がありますか?

トランスポートセキュリティは、安全でないため、クリアテキストHTTP(http://)リソースのロードをブロックしました。一時的な例外は、アプリのInfo.plistファイルを介して構成できます。

Xcode

私のドメインがであると仮定しますexample.com



15
司会者注:この質問にはすでに36の回答があります。別のものを追加する前に、ソリューションが新しいことを確認してください。
マット

5
注:ここでの解決策は、ATSをオフにする必要があることを示しています(Allow arbitary loads)。以来、すぐにこれはできませんAppleはATS必要になります - ( -期限が延長された今年のもともと終わり)developer.apple.com/news/?id=12212016b
ヤクブTruhlář


@JeefなぜiOS 10タグを追加したのですか?iOS 10で追加の変更はありましたか?私はそれがiOS9に導入されたことを感じ、そのタグは、iOSのバージョンの面で十分なものでなければならない
ジュリアンKról

回答:


469

Xcode 8.0以降とSwift 2.2以降、またはObjective Cを使用している場合:

ここに画像の説明を入力してください

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

29
なぜにNSAllowsArbitraryLoads設定されtrueますか?あなたはATSの目的を覆します。また、「世界で最も危険なコード:非ブラウザーソフトウェアでのSSL証明書の検証」も参照してください。ソフトウェアがリストを作成しました。
jww

6
@jwwこれがこの投稿の目的です。オーディオを再生するために接続する必要があるサイトはまだHTTPSを使用しておらず、待つつもりはありません。
ThinkDigital

5
これはiOS 10.0以降またはMacOS 10.12以降では機能しません。実際には、言及されたもの(example.com)を除くすべての任意のロードを許可するように指示されています。したがって、それは望まれることの逆を行います。ここではNSAllowsArbirtraryLoadsをfalseに設定する必要があります。詳細情報:アップルのドキュメント
フリークサンダース

1
同意する、なぜ地球上で誰もがこれに賛成しているのですか?例外ドメインを設定した場合、NSAllowsArbitraryLoadsを使用しても意味がありません。
ティボーノア

1
NSAllowsArbitraryLoadsはtrueである必要はないため、削除する必要があります。NSExceptionDomainsで十分であり、そのドメインへの非セキュア接続のみを有効にします。NSAllowsArbitraryLoads = trueは、すべてのドメインへの非セキュア接続を有効にするため、それをtrueに設定すると、すべてのドメインがすでに含まれているため、NSExceptionDomainsは無意味になります
mister_giga

950

NSAppTransportSecurityを使用します。

ここに画像の説明を入力してください

あなたは、設定する必要がありNSAllowsArbitraryLoadsのための鍵YESNSAppTransportSecurityのあなたのInfo.plistファイル内の辞書を。

plist構成


157
知らせてください:これは回避策です!HTTP over HTTPSを使用しているときはいつでも、ユーザーのデバイスを脆弱性にさらしています。確かにそれは多くの場合ありそうもないですが、倫理的なプログラミングがベストプラクティスです。Just sayin '
...-

36
これは解決策ではありません-これはハックです!:個々のドメイン「例外」を追加するには、以下のこの答えを参照stackoverflow.com/a/32560433/1103584
DiscDev

17
このソリューションは脆弱であることがわかっていますが、開発中に推奨する唯一のソリューションです。開発中にすべての正確なドメインを入力する必要があるのはばかげています(特に、サードパーティのWebサービスを使用している場合)。
reTs 2015年

6
これらのキーの名前が変更され、「任意のロードを許可する」の下の「App Transport Security Settings」
vishal dharankar '21

11
このソリューションに反対する人が多いのはなぜですか?これは間違いなくハックではありません!多くのアプリは、セキュリティプロトコルが常に制御できるわけではない実際のインターネットと通信する必要があります。たとえば、SSL証明書を持たない他のサーバーからの画像を表示できるようにすることは非常に合理的です。
Oren

825

ここに視覚的な設定があります:

Xcode GUIを介したinfo.plistのNSAllowsArbitraryLoadsの視覚設定


10
そのオプションはありません。
ユーザー

25
Info.plistを直接開く場合は、NSAppTransportSecurityディクショナリを追加し、その中にNSAllowsArbitraryLoadsアイテムを作成できます(以下のUmar Farooqが編集した回答を参照)。
停止

3
ここでも同じです。例外ドメインは7.3では動作しませんでした。
RegularExpression

4
このオプションは存在しません-XCode 7.3.1
jameshfisher

3
@JoshPinterからの情報は、XCodeを8で私のために働いた
マシューBellantoni

717

フォーラムの投稿「Application Transport Security?」を参照してください

また、iOS 9およびOSX 10.11でのApp Transport Security例外の設定のページ。

たとえば、次のような特定のドメインを追加できます。

<key>NSAppTransportSecurity</key>
<dict>
  <key>NSExceptionDomains</key>
  <dict>
    <key>example.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>

遅延オプションは次のとおりです。

<key>NSAppTransportSecurity</key>
<dict>
  <!--Include to allow all connections (DANGER)-->
  <key>NSAllowsArbitraryLoads</key>
      <true/>
</dict>

注意:

info.plist XMLファイルなので、ファイル内のどこにでもこのコードを配置できます。


1
どうすればいいですか、このコードを貼り付ける場所がわからないため、このコードをInfo.plistに追加する方法を教えてください。
lmiguelvargasf 2015

2
@lmiguelvargasfプレーンテキストエディターでinfo.plistを開きます
Dan Beaulieu

7
それでもエラーが発生します。例外ドメインが設定され、NSAllowsArbitraryLoadsがfalseです。NSAllowsArbitraryLoadsをtrueに設定しても、エラーが表示されます。ここの他の誰かがこの問題を抱えていますか?
klaevv 2015年

3
2016年1月30日、アップルのドキュメント番組のようキーはもはや例えば、それらの一時的な言葉を持っていること:NSExceptionAllowsInsecureHTTPLoads NSExceptionMinimumTLSVersion参照くださいdeveloper.apple.com/library/prerelease/ios/documentation/...
フィリップ・モネ

3
info.plistへのこれらの簡単な変更が機能しないために他の誰かが髪を引っ張っている場合は、Project> Target> Info> Custom iOS Target Properties
BlueGuy

330

これはテストされ、iOS 9 GMシードで動作していました-これは、特定のドメインがHTTPSではなくHTTPを使用できるようにする構成です。

<key>NSAppTransportSecurity</key>
<dict>
      <key>NSAllowsArbitraryLoads</key> 
      <false/>
       <key>NSExceptionDomains</key>
       <dict>
            <key>example.com</key> <!--Include your domain at this line -->
            <dict>
                <key>NSIncludesSubdomains</key>
                <true/>
                <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
                <true/>
                <key>NSTemporaryExceptionMinimumTLSVersion</key>
                <string>TLSv1.1</string>
            </dict>
       </dict>
</dict>

NSAllowsArbitraryLoadsすべての安全でない接続をfalse許可ないため、である必要がありますが、例外リストでは、HTTPSなしの一部のドメインへの接続が許可されます。


7
これは答えとしてマークする必要があります。iOS 9 GMシードでテストおよび作業を行い、特定のドメインが「怠惰な」方法でアプリを完全に開くことなくhttpを使用できるようにします。
DiscDev

2
これをどのようにしてinfo.plistに追加しますか?
JMStudios.jrichardson '20 / 09/20

8
わかりました。info.plistにそのエントリを追加しても、まだこのエラーが発生します-「App Transport Securityは、安全でないため、平文のHTTP(http://)リソースのロードをブロックしました。一時的な例外は、アプリのInfoで設定できます.plistファイル。」
KMC

2
@RomanShapovalov IPアドレスを使用する必要がある場合は、IPアドレスの末尾に.xip.ioを追加し、NSExceptionDomainsにxip.ioを追加してみてください。xip.ioを参照してください。開発時には(リリースではなく)IPに直接接続しますが、これは私にとってはうまく機能します。
tpankake 2016年

2
テストプロジェクトの間違ったinfo.plistに配置したことに気づくまで、うまくいきませんでした。必ず正しいものに入れてください!
チャッキー2018

144

これは、これをplistに追加するための簡単な回避策です(ただし、推奨されません)。

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

つまり、(Appleのドキュメントによると):

NSAllowsArbitraryLoads
NSExceptionDomains辞書にリストされていないドメインのApp Transport Securityを無効にするために使用されるブール値。リストされたドメインは、そのドメインに指定された設定を使用します。

デフォルト値のNOでは、すべての接続に対してデフォルトのApp Transport Security動作が必要です。

私は本当にリンクをお勧めします:

理由とすべての影響を理解するのに役立ちます。

以下のXML(Info.plistファイル内)は次のようになります。

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <false/>
    <key>NSExceptionDomains</key>
    <dict>
        <key>PAGE_FOR_WHICH_SETTINGS_YOU_WANT_TO_OVERRIDE</key>
        <dict>
            <key>NSExceptionAllowsInsecureHTTPLoads</key>
            <true/>
        </dict>
    </dict>
</dict>

すべてのページに対する任意の呼び出しを禁止しますが、そのためPAGE_FOR_WHICH_SETTINGS_YOU_WANT_TO_OVERRIDE、その接続ではHTTPプロトコルを使用できます。

上記のXMLに以下を追加できます。

<key>NSIncludesSubdomains</key>
<true/>

指定したアドレスのサブドメインに対して安全でない接続を許可する場合。

最善の方法は、すべての任意のロードをブロックし(falseに設定)、例外を追加して、問題のないアドレスのみを許可することです。

興味のある読者向け

2018年の更新:

Appleはこれをオフにすることを推奨していません-207セッションWWDC 2018でより多くの情報がセキュリティに関して説明されているので見つけることができます

歴史的な理由と開発段階のために元の答えを残す


1
NSAllowsArbitraryLoadsでなければなりませんfalse
Sound Blaster

@SoundBlasterは、どのようなケースで、反対票に対する私の回答で間違っていると思いますか?
JulianKról15年

plist(NSAppTransportSecurity NSAllowsArbitraryLoads)を追加すると、1つのWebサービスを除くすべてのWebサービスが正常に機能し、1つのWebサービスがiOS 9では内部サーバーエラー(500)を返すが、iOS8以降では正常に機能する
amit gupta

@SoundBlasterが変更を加えた、今あなたが異議を持つべきではない:)
ジュリアンKról

ありがとう、実際にどのように追加し<key>NSIncludesSubdomains</key> <true/>ますか?すべての設定をで囲む必要があり<dict>ますか?どのようにこのいまいましいplistファイルを編集しますか?書式は何ですか?:Dありがとうございます。
エージェントゼブラ2016

116

修正方法に加えて、これがなぜ起こっているのかについてより多くのコンテキストが必要な場合は、以下をお読みください。

iOS 9の導入により、アプリとWebサービス間の接続のセキュリティを向上させるには、アプリとそのWebサービス間の安全な接続がベストプラクティスに従う必要があります。ベストプラクティスの動作は、App Transport Securityによって次のように実施されます。

  • 偶発的な開示を防止し、
  • 安全なデフォルトの動作を提供します。

App Transport Securityの技術情報で説明されているように、Webサービスと通信する場合、App Transport Securityには次の要件と動作があります。

  • サーバーは、少なくともトランスポート層セキュリティ(TLS)プロトコルバージョン1.2をサポートする必要があります。
  • 接続暗号は、転送秘密を提供するものに限定されます(以下の暗号のリストを参照してください)。
  • 証明書は、SHA256以上の署名ハッシュアルゴリズムを使用して、2048ビット以上のRSAキーまたは256ビット以上の楕円曲線(ECC)キーで署名する必要があります。
  • 無効な証明書はハード障害となり、接続されません。

言い換えると、Webサービスリクエストは次の条件を満たしている必要があります。a。)HTTPSを使用し、b。)前方秘密性を備えたTLS v1.2を使用して暗号化されている。

ただし、他の投稿で述べたように、アプリので安全でないドメインを指定することにより、App Transport Securityからこの新しい動作を上書きできますInfo.plist


上書きするには、NSAppTransportSecurity> NSExceptionDomains辞書プロパティをに追加する必要がありますInfo.plist。次に、WebサービスのドメインをNSExceptionDomains辞書に追加します。

たとえば、ホストwww.yourwebservicehost.com上のWebサービスのApp Transport Security動作をバイパスする場合は、次のようにします。

  1. Xcodeでアプリを開きます。

  2. Info.plistProject Navigatorでファイルを見つけて「右マウス」でクリックし、[開く ] > [ ソースコード ]メニューオプションを選択します。プロパティリストファイルが右側のペインに表示されます。

  3. 次のプロパティブロックをメインのプロパティディクショナリ内に配置します(最初のの下<dict>)。


<key>NSAppTransportSecurity</key>
<dict>
    <key>NSExceptionDomains</key>
    <dict>
        <key>www.example.com</key>
        <dict>
            <key>NSExceptionAllowsInsecureHTTPLoads</key>
            <true/>
            <key>NSExceptionMinimumTLSVersion</key>
            <string>TLSv1.1</string>
            <key>NSIncludesSubdomains</key>
            <true/>
        </dict>
    </dict>
</dict>

追加のドメインに例外を提供する必要がある場合は、その下に別のディクショナリプロパティを追加しますNSExceptionDomains

上記のキーの詳細については、このテクニカルノートをご覧ください


1
これは私の2つのアプリで機能しましたが、3つ目のアプリでは機能しません。他の誰かが上記の修正を使用しても同じエラーメッセージが表示される状況に遭遇しましたか?(そして、はい、APIドメインを使用するように辞書を更新しました。コード内のドメインではありません)
helloB

ベスト!Appleはこのソリューションを使用することを確認
YannSteph

これは、さまざまなTLS / HTTP / HTTPSの組み合わせを使用するサービスへの多くの例外ドメインを./platforms/ios/<project>/<project>-Info.plist持つCordova / Phonegap / Ionicアプリ編集ファイルで機能しましたNSAllowsArbitraryLoads=false。最初に使用しNSAllowsArbitraryLoads=true、調整して、試行錯誤によってルールをトラブルシューティングし、ガイドラインに準拠し、承認のために送信します。注config.xml <access origin=.../>文は、部分的に、このファイルを読み込むが、現在詳細が正しい取得するには、直接編集するか、XCodeを介して、調整が必要になります。
jimmont

また、<access origin="*"/>(config.xmlで)セットNSAllowsArbitraryLoads=true(Cordova / Phonegap / hybridアプリ用)
jimmont

なぜにNSExceptionAllowsInsecureHTTPLoads設定されtrueますか?あなたはATSの目的を覆します。また、「世界で最も危険なコード:非ブラウザーソフトウェアでのSSL証明書の検証」も参照してください。ソフトウェアがリストを作成しました。
jww 2017

67

plistを直接編集するのは好きではありません。GUIを使用して、簡単にplistに追加できます。

  • 左側のナビゲーターでInfo.plistをクリックします。
  • 次に、メインエリアのデータを変更します。

    • 最後の行に+を追加します
    • グループの名前を入力してください:App Transport Security Settings
    • グループを右クリックして選択します Add Row
    • 入力任意のロードを許可します
    • 右側の値をYESに設定します

例


明確にするために:「任意のロードを許可する」がYESであり、「例外ドメイン」がある場合、許可されるロードは、例外ドメインのロードに制限されます。あれは正しいですか?

アプリケーションをリリースしたい場合、それは安全な方法ですか?
Lamour

いいえ。任意の読み込みを許可することで、アプリは任意のドメインに自由に接続できます。セキュリティの観点では、予期しないネットワーク使用を回避するために、アプリが接続するドメイン/ウェブサイトを制御および制限する必要があります。
ラプター2017年

ほとんどのアプリは既知のサーバーにのみルーティングします。これは開発者によって制御されます。したがって、セキュリティの問題は既知です。
ヴィンセント

なぜにNSAllowsArbitraryLoads設定されYESますか?あなたはATSの目的を覆します。また、「世界で最も危険なコード:非ブラウザーソフトウェアでのSSL証明書の検証」も参照してください。ソフトウェアがリストを作成しました。
jww 2017

25

Appleドキュメント1

Appleドキュメント2

これには2つの解決策があります。

ソリューション1:

  1. Info.plistファイル「キーで辞書を追加NSAppTransportSecurity
  2. キーを使用して辞書内に別の要素を追加する 'Allow Arbitrary Loads'

Plist 下の画像のように構造が表示されます。

解決策1

ソリューション2:

  1. Info.plistファイル「キーで辞書を追加NSAppTransportSecurity
  2. キー「NSExceptionDomains」を使用して辞書内に別の要素を追加します
  3. 'MyDomainName.com'タイプNSDictionaryのキーを持つ要素を追加します
  4. NSIncludesSubdomainsタイプ' のキー' 'を持つ要素を追加しBoolean、値を次のように設定しますYES
  5. NSTemporaryExceptionAllowsInsecureHTTPLoadsタイプ' のキー' 'を持つ要素を追加しBoolean、値を次のように設定しますYES

Plist 下の画像のように構造が表示されます。

解決策2

ソリューション2は、選択されたドメインのみを許可するため、ソリューション1はすべての安全でないHTTP接続を許可するため、推奨されます。


なぜにNSAllowsArbitraryLoads設定されYESますか?あなたはATSの目的を覆します。また、「世界で最も危険なコード:非ブラウザーソフトウェアでのSSL証明書の検証」も参照してください。ソフトウェアがリストを作成しました。
JWW

20

トランスポートセキュリティはiOS 9.0以降で使用できます。アプリケーション内でWSを呼び出そうとすると、次の警告が表示される場合があります。

Application Transport Securityは安全でないため、クリアテキストHTTP(http://)リソースのロードをブロックしました。一時的な例外は、アプリのInfo.plistファイルを介して構成できます。

以下をInfo.plistに追加すると、ATSが無効になります。

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

1
NSAllowsArbitraryLoadsはfalseでなければなりません。trueの場合、すべての安全でない接続を許可します
Thiago Arreguy

1つのWebサービスを除くすべてのWebサービスを正常に機能するplistに追加することにより、iOS 9では内部サーバーエラー(500)が返されますが、iOS8以降では正常に機能します
amit gupta

1
ストアで受け入れられますか?
Vrashabh Irde 2015

非常に悪いアドバイス。世界で最も危険なコード:非ブラウザーソフトウェアでのSSL証明書の検証を参照してください。推奨される方法で一杯かどうかという質問を考えると、このような「私も」という答えは必要ありません。
jww 2017

15

開発例

以下は、ATSをそのまま(安全)に保ちながら、localhostへの接続をHTTPSではなくHTTP経由で行うことができるようにするplistのスクリーンショットです。Xcode 7.1.1で動作します。

ここに画像の説明を入力してください


ローカルホストを安全にする、つまりHTTPSを使用して、react-nativeでデフォルトの構成を使用する必要がないようにする方法はありますNSExceptionAllowsInsecureHTTPLoads - YESか?
milkersarac 2017年

13

Info.plistに移動します

  1. 空のスペースを右クリックし、行の追加をクリックします
  2. その下にNSAppTransportSecurityとしてキー名を書き込みます
  3. 例外ドメインを選択し、これに新しいアイテムを追加します
  4. アクセスする必要があるドメイン名を書き留めます
  5. ドメインタイプを文字列から辞書に変更し、新しいアイテムを追加します
  6. NSTemporaryExceptionAllowsInsecureHTTPLoads。trueの値を持つブール値になります。 写真を見て、正しくそれに従ってください

1
なぜにNSAllowsArbitraryLoads設定されtrueますか?あなたはATSの目的を覆します。また、「世界で最も危険なコード:非ブラウザーソフトウェアでのSSL証明書の検証」も参照してください。ソフトウェアがリストを作成しました。
jww 2017

13

Appleによると、正当な理由がない限り、一般的にATSを無効にするとアプリが拒否されます。それでも、安全にアクセスできるドメインには例外を追加する必要があります。

Appleには、使用する設定を正確に伝える優れたツールがあります。ターミナルで、次のように入力します

/usr/bin/nscurl --ats-diagnostics --verbose https://www.example.com/whatever

そしてnscurlはこのリクエストが失敗するかどうかをチェックしてから、さまざまな設定を試し、どれが成功するか、何をするべきかを正確に伝えます。たとえば、私がアクセスするサードパーティのURLの場合、このコマンドは、このディクショナリが合格することを教えてくれました。

{
    NSExceptionDomains = {
        "www.example.com" = {
            NSExceptionRequiresForwardSecrecy = false;
        };
    };
}

自分のサイトと管理できないサードパーティのサイトを区別するには、たとえば、キーNSThirdPartyExceptionRequiresForwardSecrecyを使用します。


1
実際にアプリケーションでテストする前に確認できる優れたツール。時間を節約する。しかし、このコマンドの出力を理解するために読むべきリソース。
damithH 2017年

1
興味深いツール。私の場合、それは物事を誇張しています。を含む3つのキーがリストされていますNSExceptionAllowsInsecureHTTPLoads = true;が、1つは必要ないことがわかりました。
クリスプリンス


10

注:plistの例外ドメインは小文字である必要があります。

例:設定->共有でマシンに "MyAwesomeMacbook"という名前を付けました。サーバー(テスト用)はMyAwesomeMacbook.local:3000で実行されており、アプリはhttp://MyAwesomeMacbook.local:3000 / files ...にリクエストを送信する必要があります。plistで「myawesomemacbook。」を指定する必要があります。例外ドメインとして「ローカル」。

-

あなたのinfo.plistには...

<key>NSAppTransportSecurity</key>
<dict>
  <key>NSExceptionDomains</key>
  <dict>
    <key>myawesomemacbook.local</key>
    <dict>
      <!--Include to allow subdomains-->
      <key>NSIncludesSubdomains</key>
      <true/>
      <!--Include to allow HTTP requests-->
      <key>NSExceptionAllowsInsecureHTTPLoads</key>
      <true/>
    </dict>
  </dict>
</dict>

9

使用する:

PListスクリーンショットで理解を深める

辞書型のplistファイルに新しい項目NSAppTransportSecurityを追加し、ブール型の辞書にサブ項目NSAllowsArbitraryLoadsを追加して、ブール値YESを設定します。これでうまくいきます。


1
NSAllowsArbitraryLoadsはfalseでなければなりません。trueの場合、すべての安全でない接続が許可されます
Thiago Arreguy

1つのWebサービスを除くすべてのWebサービスを正常に機能するようにplistに追加すると 、iOS 9では内部サーバーエラー(500)が返されますが、iOS8以降では正常に機能します@ThiagoArreguy
amit gupta

非常に悪いアドバイス。世界で最も危険なコード:非ブラウザーソフトウェアでのSSL証明書の検証を参照してください。推奨される方法で一杯かどうかという質問を考えると、このような「私も」という答えは必要ありません。
jww 2017

私はそれが悪いアドバイスであることを知っていますが、それは当面の開発モードのみの解決策にすぎません。Appleは私たちに柔軟性を提供してくれました。もしそれがかなり悪いとしたら、彼らはこれを許しません。
Tejinder

9

2015-09-25(2015-09-18のXcode更新後):

非遅延メソッドを使用しましたが、機能しませんでした。以下は私の試みです。

最初、

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSExceptionDomains</key>
    <dict>
        <key>www.xxx.yyy.zzz</key>
        <dict>
            <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
            <true/>
            <key>NSTemporaryExceptionMinimumTLSVersion</key>
            <string>TLSv1.1</string>
            <key>NSIncludesSubdomains</key>
            <true/>
        </dict>
    </dict>
</dict>

次に、

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSExceptionDomains</key>
    <dict>
        <key>www.xxx.yyy.zzz</key>
        <dict>
            <key>NSExceptionAllowsInsecureHTTPLoads</key>
            <true/>
            <key>NSExceptionMinimumTLSVersion</key>
            <string>TLSv1.1</string>
            <key>NSIncludesSubdomains</key>
            <true/>
        </dict>
    </dict>
</dict>

最後に、私は遅延メソッドを使用しました:

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

少し不安かもしれませんが、他の解決策は見つかりませんでした。


なぜにNSAllowsArbitraryLoads設定されtrueますか?あなたはATSの目的を覆します。また、「世界で最も危険なコード:非ブラウザーソフトウェアでのSSL証明書の検証」も参照してください。ソフトウェアがリストを作成しました。
jww 2017

9

Swift 4およびxocde 10では、NSAllowsArbitraryLoadsを変更して任意のロードを許可しています。したがって、次のようになります。

<key>App Transport Security Settings</key>
<dict>
     <key>Allow Arbitrary Loads</key><true/>
</dict>

6

そこに着く方法について言及する価値があるかもしれません...

Info.plistは、Main.storyboardまたはviewController.swiftの下にあるファイルの1つです。

最初にクリックしたときは、通常は表形式であるため、ファイルを右クリックして「次の形式で開く」ソースコードを作成し、下のコードを最後に追加します。

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

上記のコードをコピーして貼り付けます

 "</dict>
</plist>"

これは最後です。


なぜにNSAllowsArbitraryLoads設定されtrueますか?あなたはATSの目的を覆します。また、「世界で最も危険なコード:非ブラウザーソフトウェアでのSSL証明書の検証」も参照してください。ソフトウェアがリストを作成しました。
jww 2017

5

Xcode 7.1のアップデート、問題27.10.15に直面:

Info.plistの新しい値は「App Transport Security Settings」です。そこから、この辞書には次のものが含まれているはずです。

  • 任意の負荷を許可する= YES
  • 例外ドメイン(httpドメインをここに挿入)

4

ここに来て、WKWebViewが常に白で何も読み込まれない理由を見つけようとしている場合(ここで説明されているように、WKWebViewを迅速かつmacOSアプリで動作させるにはどうすればよいです):

上記のすべてのロケットサイエンスが機能しない場合は、明らかなことを確認してください。サンドボックスの設定

サンドボックス設定]

SwiftとCocoaは初めてですが、プログラミングの経験が豊富なので、この解決策を見つけるのに約20時間を費やしました。何十ものヒップスターiOSのチュートリアルやアップルの基調講演はありません。この小さなチェックボックスについては何も触れられていません。


ああ、神様、どうもありがとう!同じ20時間の検索で節約できました。
Brecht Machiels

2
ターゲット(Xcode 9.4.1)の機能セクションにそのセクションが表示されない
シム'20

3

デフォルトでは、iOSはHTTPS APIのみを許可します。HTTPは安全ではないため、アプリトランスポートのセキュリティを無効にする必要があります。ATSを無効にする方法は2つあります。

1.プロジェクトinfo.plistにソースコードを追加し、ルートタグに次のコードを追加します。

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

2.プロジェクト情報を使用します。

左ペインのプロジェクトでプロジェクトをクリックし、ターゲットとしてプロジェクトを選択して、情報タブを選択します。次の構造で辞書を追加する必要があります。

ここに画像の説明を入力してください



1

NSExceptionDomainsターゲットサイトがをjs介して外部ドメインからリソース(ファイルなど)をロードする可能性があるため、を使用しても同時に効果が適用されない場合がありますhttp。これらの外部ドメインも追加することで解決できますNSExceptionDomains

ロードできないリソースを調べるには、リモートデバッグを使用してみてください。これはチュートリアルです:http : //geeklearning.io/apache-cordova-and-remote-debugging-on-ios/


0

Cordovaの場合、それをios.jsonに追加するには、次のようにします。

"NSAppTransportSecurity": [
   {
      "xml": "<dict><key>NSAllowsArbitraryLoads</key><true /></dict>"
   }
]

そしてそれは次の中にあるはずです:

"*-Info.plist": {
   "parents": {
   }
}

config.xmlの<access origin = "*" />だけでは機能しませんでした。両方が必要かどうかはわかりませんが、ios.jsonソリューションで解決できました。
zeusstl 2016年

なぜにNSAllowsArbitraryLoads設定されtrueますか?あなたはATSの目的を覆します。また、「世界で最も危険なコード:非ブラウザーソフトウェアでのSSL証明書の検証」も参照してください。ソフトウェアがリストを作成しました。
JWW

-1

多くの人が指摘したように、これはiOS 9.0に付属する機能の問題です。彼らはApp Transport Securityと呼ばれるものを追加しました、そして私もそれが私のAppsを壊したときにイライラしました。

.plistファイルのNSAppTransportSecurityディクショナリでNSAllowsArbitraryLoadsキーを使用してYESに包帯できますが、最終的には、URLを形成するコードを書き直して、HTTPS://プレフィックスを形成する必要があります。

AppleはiOS 9.0でNSUrlConnectionクラスを書き直しました。NSURLConnectionでそれについて読むことができます。

そうでない場合は、正しいソリューションを実装する時間があるまで、iOS 9.0を終了する必要がある場合があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.