【发布时间】:2017-04-02 03:00:37
【问题描述】:
我们的客户最近要求我们从 WebView 切换到 WKWebView。他们的应用程序使用本机登录,这是通过对后端的 2 次 POST 调用完成的,返回各种授权 cookie,这些 cookie 后来用于整个应用程序中的每个 HTTP/AJAX 调用。
使用 WebView,这一切都像魅力一样工作,无需实现一行自定义代码。用户登录后,cookie 默认存储到 cookie 存储中,WebView 总是从那里获取并使用它们,因为 HTTPCookieStorage 在 NSURLSession 和 WebView 之间共享。
WKWebView 是一个全新的故事。将 WebView 切换到 WKWebView 后,我们看到授权不起作用。这是由于在 WKWebView 中丢失了一些 cookie。我们现在存储来自 NSURLSession 响应的 cookie,并通过在 HTTP 请求中添加“Cookie”标头手动将它们附加到 WKWebView。
我们能够以这种方式获得 HTTP 调用的授权,但现在我们看到了一个新问题。不知何故,在 WKWebView 中完成的所有 AJAX 调用都会丢失授权 cookie。
您是否知道是否有任何方法可以让授权 cookie 也出现在 AJAX 调用中?用
注入javascriptjavascriptCookieString = @"document.cookie = 'testCookie=testValue';";
[self.webView evaluateJavaScript:javascriptCookieString completionHandler:nil];
没有工作,似乎对 Javascript 调用没有任何控制,所以我无法在请求被执行之前更改它们。谢谢。
【问题讨论】:
-
你找到修复了吗?
标签: ios objective-c ajax cookies wkwebview