2017年3月8日 星期三

如何使 ios app 接受 http url

iOS 9 之後,iOS app 已經預設不支援開頭為 http 的 url。這牽扯到一些安全性的考量,可參考下列文章
What is App Transport Security (ATS)?

雖然目前很多網站都支援 Https,但是難免會遇到一些不支援的情況。這時候我們需要去更改 iOS app 專案的設定來允許接受 http url。

若是使用 react-native CLI 產生專案,我們可以在 ios 目錄下找到 ios 專案相關的設定


reactNavSample 是 CLI 的專案名稱,若要支援 http url,請打開 Info.plist 找到 NSAppTransportSecurity 值加入

  <key>NSAllowsArbitraryLoads</key>   
  <true>   

便可支援 http url

*請注意 NSAllowsArbitraryLoads 會允許所有的網域,如果你只是想支援部分的網域請在 NSExceptionDomains 中增加允許的網域

例如允許 localhost 請加入
   <key>localhost</key>   
   <dict>    
      <key>NSExceptionAllowsInsecureHTTPLoads</key>   
   </dict>   


*在指定網域的情況下,如果該網域有使用到其他網域的資源,而在plist中並未指定就會發生無法存取的狀況。舉個例子

假設在plist中你指定支援 abc.com ,當app去存取 http://abc.com 底下資源的時候一切正常。但假設 abc.com 中有用到 def.com 的資源的時候,存取就會發生問題


沒有留言:

張貼留言