虽然UIWebView通过使用来获取cookie 似乎很简单NSHTTPCookieStorage.sharedHTTPCookieStorage(),但它似乎WKWebView将cookie存储在其他地方.
我做了一些研究,然后我从NSHTTPURLResponse对象中抓取了一些饼干.但是,这并不包含以下所用的所有Cookie WKWebView:
func webView(webView: WKWebView, decidePolicyForNavigationResponse navigationResponse: WKNavigationResponse, decisionHandler: (WKNavigationResponsePolicy) -> Void) {
if let httpResponse = navigationResponse.response as? NSHTTPURLResponse {
if let headers = httpResponse.allHeaderFields as? [String: String], url = httpResponse.URL {
let cookies = NSHTTPCookie.cookiesWithResponseHeaderFields(headers, forURL: url)
for cookie in cookies {
logDebug(cookie.description)
logDebug("found cookie " + cookie.name + " " + cookie.value)
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
奇怪的是WKWebsiteDataStore,ios 9中还有一个负责管理cookie WKWebView的类,但是,该类不包含检索cookie数据的公共方法:
let storage = WKWebsiteDataStore.defaultDataStore() …Run Code Online (Sandbox Code Playgroud) 我刚刚开始编译到iOS 11,并注意到Apple现在宣布该属性
var automaticallyAdjustsScrollViewInsets: Bool { get set }
Run Code Online (Sandbox Code Playgroud)
被弃用:
是否有其他属性可以在iOS 11中修复此警告?
默认值是否保持正确或将来如何处理?
如何用swift设置标签栏徽章?例如,当我收到消息图标上显示数字1的新消息时!我是否必须使用UITabBarItem.swift并在其中编写代码!我不确定我怎么做
谢谢 !
由于Apple iOS9的新安全机会将ssl请求限制在任何类型的服务器上,我遇到了麻烦.
参见参考:https://developer.apple.com/library/content/documentation/General/Reference/InfoPlistKeyReference/Articles/CocoaKeys.html#//apple_ref/doc/uid/TP40009251-SW33
实际上,我想利用默认值而不允许任何类型的连接NSAllowsArbitraryLoads:false
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<false/>
</dict>
Run Code Online (Sandbox Code Playgroud)
当然有些连接是我们想要的,我从自己的服务器以及第三方服务器检索数据.
您现在可以嗅探应用程序的流量,这是由第三方工具生成的,或者您使用记录所有网络流量,在此处引用: 如何确定哪个URL被App Transport Security阻止?
很容易跟踪此日志中发生的所有错误(不太难以查找错误代码).通过这种方式,由于负载限制(当然,优秀的软件工程师心里明白;),我很容易看到正在建立的连接并且可能失败了.))
尽管来自Google Analytics,但任何类型的第三方跟踪器或自己的网络设置都运行良好.起初我下载了最后一个示例代码并查看了它们,当然你不能指望一个库已经支持最新的beta系统,不过,我试了一下.一旦NSAllowsArbitraryLoads设置为false/NO,它就会失败
即使限制尽可能少的第三方,我也无法让它运行:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<false/>
<key>NSExceptionDomains</key>
<dict>
<key>ssl.google-analytics.com</key>
<dict>
<key>NSRequiresCertificateTransparency</key>
<true/>
<key>NSThirdPartyExceptionMinimumTLSVersion</key>
<string>TLSv1.2</string>
<key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
<false/>
<key>NSThirdPartyExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
</dict>
Run Code Online (Sandbox Code Playgroud)
还尝试了google-analytics.com并包含子域名NSIncludesSubdomains:true.而且,由于浏览器中的简单网站" https://google-analytics.com "重定向到" https://www.google.com/analytics/ ",我还尝试将google.com作为附加异常域,这也失败了.
即使看一下支持的ssl-ciphers,我认为这里没问题:
nmap --script ssl-enum-ciphers -p 443 ssl.google-analytics.com
| TLSv1.2:
| ciphers:
| TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA (dh 256) - C
| TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (dh 256) - A
| TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 (dh 256) - A
| TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (dh 256) - A
| …Run Code Online (Sandbox Code Playgroud) 我们的Xcode Build Server失败了,不再执行任何测试了.版本8.3(8e162)
它只是失败了声明:
建立服务问题
错误找不到配置用于测试的设备.
当我选择"修复它"时,可以简单地将其重定向到机器人设置中的"编辑机器人" - >"设备".有时iOS设备列表加载的时间比以前(立即)更长(~15秒).
因此,当设备最终显示(如果它们甚至显示)并被选中时,会出现以下错误提示: 内部错误更新机器人,请尝试再次配置机器人
这里提供的解决方案对我来说没有问题,因为我在机器人登录: xcode机器人编辑失败
有没有人找到
共享方案或某些东西突然出错或者是否配置错误可能会导致问题?
在我再次创建机器人之前,我真的想修复机器人,保留构建历史等.