【问题标题】:Third-party cookies being blocked inside iFrame in iOS WKWebview在 iOS WKWebview 的 iFrame 中阻止第三方 cookie
【发布时间】:2020-04-25 23:22:17
【问题描述】:

我有一个用 React 开发的网站,我们在其中实现了通过 iFrame 登录到第三方。这在我们必须支持的所有浏览器中都可以正常工作,除了 iOS 上的 WKWebview,它拒绝在 iFrame 中的另一个域上设置 cookie。我们有一个 React Native 应用程序,可以在这个 webview 中显示网页,所以我们必须支持它.. 通过大量谷歌搜索,我发现了各种不再有效的解决方法,并最终出现在 Webkits 错误页面:https://bugs.webkit.org/show_bug.cgi?id=204109 这来自销售团队:https://help.salesforce.com/articleView?id=000351155&language=en_US&type=1&mode=1 目前尚不清楚这是否实际上已修复或是否已重新引入(似乎已修复,因为它不适用于 iOS 13.3 设备)。 有没有人有类似的经历,甚至更好的潜在解决方法?

提前致谢

【问题讨论】:

  • 我也遇到了同样的问题,你找到解决办法了吗?
  • 不幸的是,没有 - 虽然我正在努力解决的问题不一定是一个错误,而只是 Safari 的一个安全功能,它只允许以前访问过的网站设置 cookie。我看过一些 javascript变通办法,但只有在您控制两个域时才有效,而我试图在 iFrame 中显示的网站是我们正在构建的第三方网站,我们正在为工作进行集成
  • 它看起来在 iOS 13.2.2 上运行良好
  • 我已经在 Xcode 模拟器 (iPhone 11 Pro Max iOS 13.3) 上测试过它,但它不起作用,但在 WKWebView 中的 iPhone 8 (iOS 13.3) 和 iPhone 7 (iOS 11.4.1) cookie 上工作正常,它也适用于 XCode 模拟器 iPhone 11 Pro Max iOS 13.2.2
  • 感谢您的测试!行为如此不一致似乎很奇怪

标签: ios react-native webview webkit wkwebview


【解决方案1】:

对于遇到此问题的其他人。我试图在我在 web 视图中显示的网站的 iframe 中显示第三方登录表单,并且来自第三方网站的 cookie 被阻止,因为 Safari 只允许来自您之前访问过的网站的第三方 cookie .我的解决方法最终是直接通过 webview API 在第三方域上设置 cookie,这显然“欺骗”Safari 认为该站点之前已访问过,因此允许 cookie。

【讨论】:

  • @fangmobile 当然,这至少对我们有用(使用@react-native-community/cookies 包中的 CookieManager):if (Platform.OS === "ios") { CookieManager.set( { name: "SOME_COOKIE_NAME", value: "SOME_COOKIE_VALUE", path: "/", domain: "domain you want to be able to set cookies on inside your webview", }, true ); } 编辑:抱歉格式很糟糕,我真的不知道如何让它正确地尊重评论中代码中的换行符:/
  • 这仍然对您有用吗?我无法让这个例子在 ios 14 上工作
猜你喜欢
  • 2020-06-05
  • 1970-01-01
  • 1970-01-01
  • 2021-11-14
  • 2021-11-19
  • 2019-06-22
  • 2018-10-06
  • 2014-11-14
  • 1970-01-01
相关资源
最近更新 更多