使用Xcode 8和iOS 10.3将NSExceptionDomains添加到WKWebView的Info.plist中

时间:2017-06-29 23:19:57

标签: swift3 xcode8 ios10 wkwebview

更新: JS网络请求也可以使用UIWebView,而不是WKWebView。但是,我需要WK版本来进行JS互操作。

我一直在尝试并且无法让外部JS请求在Xcode 8和iOS 10.3上的WKWebView内工作以访问Dark Sky API。我尝试的所有内容都给了我相同的跨脚本访问错误(我已经删除了所使用的URL字符串的详细信息):

[Error] Origin null is not allowed by Access-Control-Allow-Origin.
[Error] Failed to load resource: Origin null is not allowed by Access-Control-Allow-Origin.
[Error] XMLHttpRequest cannot load https://api.darksky.net/... due to access control checks.

我的Info.plist包含此代码段,基于大量搜索似乎是正确的(“不安全”设置应该与此无关,因为我使用的是HTTPS):

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

我在内部字典和外部字典中尝试了各种设置变体(甚至尝试添加糟糕的NSAllowsArbitraryLoadsNSAllowsArbitraryLoadsInWebContent,但无济于事。)

完全相同的JS代码适用于Android WebView,其基本安全设置已切换且使用curl,因此我知道它与Dark Sky API端点无关。

我看到一堆其他SO答案似乎表明我在.plist中使用的内容(请参阅herehere),但这些似乎没有诀窍。

任何想法,我在这里缺少什么神奇的iOS伏都教?

0 个答案:

没有答案