gpt4 book ai didi

ios - 使用代码 302 重定向时,WKWebView 无法设置 cookie

转载 作者:可可西里 更新时间:2023-11-01 03:45:09 25 4
gpt4 key购买 nike

我向 url1 发送了请求。 url1 将使用 cookie 重定向到 url2。 url2 用于授权。我得到代码“302 found”,这是正确的。但是当 url2 重定向回 url1 时,cookie 丢失了。这导致我的请求保持重定向到 url2,循环直到失败。

有没有人遇到过这种问题并且知道解决办法?提前致谢。

这是一个 WKWebView 问题。 UIWebView 将正常工作。但不知何故,我需要更改为使用 WKWebView。

我已经尝试了很多解决方案,比如Can I set the cookies to be used by a WKWebView? .这些方法可以处理同一域中的 cookie。我的问题是 url1 和 url2 有不同的域。 redirect时,cookie丢失,导致授权失败,导致url1和url2循环。

有没有人遇到过这个问题并找到了解决方法?提前致谢。

最佳答案

不幸的是,在 WKWebView 中没有官方支持处理 302 重定向响应。我也遇到了同样的问题。有一种方法可以解决,但可能会冒一些风险并且不优雅。

  1. 重写 WKWebView.load(_ request: URLRequest) 并改用 URLSession 发出请求。
  2. 确保你的 URLSession 可以自己处理 302 重定向,这意味着你需要实现 func urlSession(_ session: URLSession, task: URLSessionTask, willPerformHTTPRedirection response: HTTPURLResponse, newRequest request: URLRequest, completionHandler: @escaping ( URLRequest?) -> Void) 以指定您不希望 URLSession 自动处理 302 重定向。
  3. 一旦您使用 URLSession 获得 302 响应,附加的 cookie 将自动设置为 HTTPCookieStorage.shared。然后使用这些 cookie 和 url 发出新请求WKWebView 本身的响应头字段 Location

代码示例是Here .我将 WKWebView 子类化,并在大多数情况下处理 cookie,包括您的 302 重定向情况。如果它适合您,请给我一个星标,谢谢!

这确实是一种 hack 方式,如果您想在产品中使用它,请小心。

关于ios - 使用代码 302 重定向时,WKWebView 无法设置 cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44576468/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com