2015年11月16日月曜日

ios9 transport security cordovaの取り扱い

ios9からhttpsアクセスを防ぐというApp Transport Securityですが、cordovaが標準でどのように扱っているのかよくわかりませんでした。

config.xml
<access origin="http://hogehoge.com" />
<access origin="http://fugafuga.com" />

と記載していると {アプリ名}-info.plistには以下のように自動的に追加されています。

platform/ios/{アプリ名}/{アプリ名}-info.plist
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
<key>NSExceptionDomains</key>
<dict>
<key>hogehoge.com</key>
<dict/>
<key>fugafuga.com</key>
<dict/>
</dict>
</dict>

やろうとしていることは<accsss>に記載されたURLへは例外として通してくれようとしてくれているとは思いますが、理解が全く足りていませんが、まずは
NSAllowsArbitraryLoads を falseにして、NSExceptionAllowsInsecureHTTPLoadsをそれぞれのurlのdictに加えることが必要ではないでしょうか。

<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<false/>
<key>NSExceptionDomains</key>
<dict>
<key>hogehoge.com</key>
<dict>
    <key>NSExceptionAllowsInsecureHTTPLoads</key>
    <true/>
 </dict>
<key>fugafuga.com</key>
<dict>
    <key>NSExceptionAllowsInsecureHTTPLoads</key>
    <true/>
</dict>
</dict>
</dict>

これでhttp://hogehoge.comにアクセスできるようになりました。
しかし、ビルドの度にplistは書き換えられるので、フックして書き換える処理をいれるか、cordovaのビルド後に最後に修正というのがよいのでしょうか。

0 件のコメント:

コメントを投稿