【问题标题】:WKWebView can't carry cookie for 302 redirectWKWebView 无法携带 cookie 进行 302 重定向
【发布时间】:2016-11-17 15:52:07
【问题描述】:

在调用 loadRequest() 函数加载页面之前,我在请求标头中设置了 cookie。我还使用 document.cookie() 根据 [WKWebView Cookies. 通过 WKUserScript 设置 cookie。但是,我发现如果发生 302 重定向,请求可能会因 cookie 丢失而失败。比如http://A的请求重定向到http://B,我可以通过操作请求头和使用WKUserScript为http://A的请求设置cookie,但这两种方式都不能为http://B的请求设置cookie,所以http://B 的 302 请求可能会失败。这种情况在ios8比ios9出现的频率更高。有人有解决方法吗?

【问题讨论】:

  • 你现在有解决这个问题的办法吗?
  • 是的,但这并不完美,iOS 11 现在发布了一些新的完美 api 供开发人员管理 WKWebView cookie。
  • 您能告诉我解决方法吗?我已经看到了注释,但是应用程序仍然需要在较低的 iOS 上更改 WKWebView。
  • 是的,首先,我们将 cookie 添加到 NSHTTPCookieStorage。其次,我们在 WKNavigationDelegate 函数中检测请求头的 cookie 是否与 NSHTTPCookieStorage 相同 - (void)webView:(WKWebView *)webView decisionPolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler;如果请求头的 cookie 为 nil 或与 NSHTTPCookieStorage 不同,我们将 NSHTTPCookieStorage 中的 cookie 添加到请求头中,取消当前请求并重新加载请求新请求。但是,它并不完美,它不能处理所有问题。
  • 我遇到了“帧加载中断”的问题,你知道为什么吗?当我搜索这个错误时,它是针对 UIWebView 的。

标签: redirect cookies wkwebview


【解决方案1】:

请注意,但可能第一个响应可能包含“Set-Cookie”标头。因此,您必须在第二个请求中使用提供的 cookie。可能是它不见了。

【讨论】:

    【解决方案2】:

    在 iOS 中设置 cookie 的解决方法请查看我的答案。您必须同时在 request 和 wkuserscript 中设置 cookie。否则它会失败一次并在第二次运行中成功,

    Can I set the cookies to be used by a WKWebView?

    【讨论】:

      猜你喜欢
      • 2017-11-18
      • 1970-01-01
      • 1970-01-01
      • 2015-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-26
      相关资源
      最近更新 更多