更新: 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>
我在内部字典和外部字典中尝试了各种设置变体(甚至尝试添加糟糕的NSAllowsArbitraryLoads
和NSAllowsArbitraryLoadsInWebContent
,但无济于事。)
完全相同的JS代码适用于Android WebView
,其基本安全设置已切换且使用curl
,因此我知道它与Dark Sky API端点无关。
我看到一堆其他SO答案似乎表明我在.plist
中使用的内容(请参阅here和here),但这些似乎没有诀窍。
任何想法,我在这里缺少什么神奇的iOS伏都教?