我认为我们刚刚发现iOS 9(2015年10月23日版)的一个错误,当时使用客户端SSL证书与后端API通信.与许多REST服务一样,我们的API生成4xx错误代码以传达状态.其中一个是当客户端尝试访问特定客户端ID无权访问的路径时出现403 Forbidden错误.请注意,在客户端SSL证书设置了有效连接并且客户端ID已经过身份验证之后,会发生此HTTP错误.
在iOS 9中,此序列将生成无效的客户端SSL错误:
FAILED: Error Domain=NSURLErrorDomain Code=-1206 "The server “our.server.here” requires a client certificate."
(注意:这是我的推文的后续内容:https://twitter.com/ckmaresca/status/657576686318256128 - 我认为SO是大多数人会搜索的地方)
ssl client-certificates http-status-code-403 ios app-transport-security
我有一个WKWebView将使用在线收集的链接显示用户的网页.有时这些链接http:被阻止ATS.我尝试过简单地将链接更改为https:有时可用的链接.
但是,我经常收到错误" SSL发生了错误,无法与服务器建立安全连接".
有时页面只是重定向到http:,再次被阻止.其他时候https:页面只是"未找到".http:仅删除会导致"Unsupported URL"错误.
有没有办法WKWebView显示这些页面?
请不要"建议NSAllowsArbitraryLoads,甚至是每个域的例外(我事先都不知道域名是什么).这些页面在Safari上完全加载,甚至是移动游戏,所以它必须是可能的.
我在iOS 11中使用AFNetworking.我收到的错误如下:
任务<2EC9C49F-1889-4BFF-83B4-2047ED6E5F2A>.<1> HTTP加载失败(错误代码:-999 [1:89])错误(countries.php):错误域= NSURLErrorDomain代码= -999"已取消"UserInfo = {NSErrorFailingURLStringKey = https://www.plrc.us/api/countries.php,NSLocalizedDescription =已取消,NSErrorFailingURLKey = https://www.plrc.us/api/countries.php }
我已经尝试了所有可能的方式.
请帮我解决这个问题.
谢谢
我正在尝试调试一个可以进行大量HTTP调用的应用程序.我在控制台中看到了这个:
2015-09-08 17:21:01.458 MyApp[3186:3064431] NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9802)
Run Code Online (Sandbox Code Playgroud)
我理解如何向我的plist添加异常,但有没有办法添加断点,这些请求无法查看请求的内容?
在iOS 9中启用ATS后,我的许多客户无法满足前向保密要求.但是,它们可以满足https和TLS 1.2要求.因此,我希望放宽前向保密要求,同时保持https和TLS 1.2.
我想知道是否有人想出了一种方法来使用NSExceptionRequiresForwardSecrecy或NSThirdPartyExceptionRequiresForwardSecrecy来禁用所有域的前向保密.
我尝试使用*用于NSExceptionDomains或*.com但是当我使用它时问题链接不起作用.当我使用其domain.com时,问题链接将加载.我正在查看Apple Docs,但没有看到任何方法来实现我的目标.
是否可以通过将NSAppTransportSecurity/NSAllowsArbitraryLoads设置为true来完全禁用所有域的前向保密?
谢谢!
我想在iOS模拟器中通过http uri作为源加载图像.但是屏幕上没有显示任何可以通过检查员看到的线框.如果你在Android中加载相同的代码它工作正常,如果你使用https uri而不是http它也可以正常工作.
示例代码:
render() {
return (
<View>
<Image
source={{uri:https://facebook.github.io/react/img/logo_og.png'}} // works
// source={{uri: http://facebook.github.io/react/img/logo_og.png'}} // doesn't work
style={{width: 400, height: 400}}
/>
</View>
);
}
Run Code Online (Sandbox Code Playgroud) 在 iOS 应用中,我遇到了应用传输安全性问题:
我在网上阅读了很多帖子,但由于某种原因,我在 Info.plist 中设置的内容似乎被忽略了。我尝试了几种可能性,这是最后一种:
<plist version="1.0">
<dict>
……..
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>mydomain.net</key>
<dict>
<key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
<true/>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
<false/>
</dict>
</dict>
</dict>
……..
</dict>
</plist>
Run Code Online (Sandbox Code Playgroud)
但是无论我在 Info.plist 中设置什么,我都会收到此消息:
2016-03-25 13:21:17.234 MyApp[3587:1285514] App Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecure. Temporary exceptions can be configured via your app's Info.plist file.
Run Code Online (Sandbox Code Playgroud)
我可能会错过什么?
info.plist ios app-transport-security nsapptransportsecurity
我们最近决定在今年夏天更新我们的几个应用程序,将它们从http切换到https,以便遵循2017年1月生效的新Apple指南.
转移到应用程序和从应用程序转移的唯一内容是产品信息,没有用户信息或任何甚至远程敏感的东西 但我们希望尽早遵守,以便我们以后不必担心.
问题:
Apple 似乎迫使我们处理美国出口合规法,该法要求我们获得出口商注册号(ERN)和SNAP-R的批准,该法需要公司识别号(CIN).我想,我不是律师.
现在这个问题在这里有所回答,但这已经超过3年了,如果我了解发生了什么,每个与他们的应用程序建立http连接并且在美国境外可用的人都会经历这个问题.
如果是这种情况那么我会期望对大多数iOS应用程序开发人员需要切换到https所需的内容有一个非常明确的解释.
但是我对此并没有太多了解,我对确切的要求(如果有的话)感到困惑.
任何律师都表示赞赏.
我的 ATS 有问题。我使用的是 XCode 9.1,我的开发目标是 11.0。我正在使用 react-native 0.49 进行开发
我的程序正在获取具有有效(谷歌浏览器)letsencrypt 证书的https ( https://www.xxxx.com ) 资源。获取仅在 NSAllowsArbitraryLoads 设置为 true 时有效,当设置为 false 时获取被阻止(调试出)?
我正在使用临时域 ( https://xxxx.no-ip.org )进行一些测试。此域也有一个有效的 Letencrypt 证书。在这种情况下,一切正常。
我能看到两个主机之间的唯一区别是测试域是单域主机,生产主机是多域主机。有人有建议吗?
问候,
哈利
调试出来: CFNetwork Diagnostics [1:1187] 12:38:08.258 { Did Fail: (null) Loader: {url = https://.... Error: Error Domain=kCFErrorDomainCFNetwork Code=-1200 "(null) " UserInfo={_kCFStreamPropertySSLClientCertificateState=0, _kCFNetworkCFStreamSSLErrorOriginalValue=-9802, _kCFStreamErrorDomainKey=3, _kCFStreamErrorCodeKey=-9802}
这是我的info.plist部分
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<false/>
<key>NSExceptionDomains</key>
<dict>
<key>xxxx.no-ip.org</key>
<dict/>
<key>localhost</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
<key>xxxx.com</key>
<dict>
<key>NSIncludesSubdomains</key>
<true/>
</dict> </dict> </dict>
Run Code Online (Sandbox Code Playgroud) 我有一个 WKWebView 来加载一个网站,该网站具有使用 WKURLScheme 实现的自定义 url 方案 (mycustomurl://),该网站将使用 GET 调用该方案。当网站位于 http:// 时,一切都按预期工作,但是当我切换到 https:// 时会中断,并出现以下错误:
[blocked] The page at https:// (url snipped) was not allowed to display insecure content from mycustomurl://(url snipped).
Run Code Online (Sandbox Code Playgroud)
WKURLScheme 回调从未被命中,所以我怀疑 Safari 或更高的功率阻止了它:/
我已经梳理了关于 ATS 的 SO 讨论,但都没有奏效。我确实看到了一些像这样的讨论,提到这是因为Safari 阻止了混合内容,当我直接在 Safari 上尝试时,它确实生成了相同的结果(被阻止)。
这个好像没有解决办法?似乎我们无法关闭 Safari 的混合内容限制。那么应该如何使用和实现自定义 URL 方案,因为 https 应该总是比 http 更好的选择?
我确实注意到大多数自定义 URL 方案教程都有 http 而不是 https ...
ios ×9
https ×2
info.plist ×2
swift ×2
wkwebview ×2
afnetworking ×1
ios9 ×1
nsurlsession ×1
publishing ×1
react-native ×1
safari ×1
ssl ×1