首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在WkWebView /移动Safari中为页面中的iframe启用会话cookies

在WkWebView /移动Safari中为页面中的iframe启用会话cookies,可以通过以下步骤实现:

  1. 首先,确保你的应用程序已经使用WkWebView或移动Safari作为浏览器引擎。
  2. 在WkWebView中启用会话cookies,需要设置WkWebView的configuration属性的processPool属性。processPool是一个WKProcessPool对象,它可以共享cookies和缓存数据。
代码语言:swift
复制

let configuration = WKWebViewConfiguration()

configuration.processPool = WKProcessPool()

let webView = WKWebView(frame: .zero, configuration: configuration)

代码语言:txt
复制
  1. 接下来,你需要在WkWebView加载网页之前,将会话cookies添加到WkWebView的sharedHTTPCookieStorage中。
代码语言:swift
复制

let cookieStorage = HTTPCookieStorage.shared

if let cookies = cookieStorage.cookies {

代码语言:txt
复制
   for cookie in cookies {
代码语言:txt
复制
       webView.configuration.websiteDataStore.httpCookieStore.setCookie(cookie)
代码语言:txt
复制
   }

}

代码语言:txt
复制
  1. 确保在WkWebView加载网页之前,将WkWebView的navigationDelegate设置为自定义的类,并实现其中的方法。
代码语言:swift
复制

class WebViewDelegate: NSObject, WKNavigationDelegate {

代码语言:txt
复制
   func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
代码语言:txt
复制
       // 网页加载完成后,可以在这里检查是否成功启用了会话cookies
代码语言:txt
复制
   }

}

let webViewDelegate = WebViewDelegate()

webView.navigationDelegate = webViewDelegate

代码语言:txt
复制
  1. 最后,加载包含iframe的网页。
代码语言:swift
复制

if let url = URL(string: "https://example.com") {

代码语言:txt
复制
   let request = URLRequest(url: url)
代码语言:txt
复制
   webView.load(request)

}

代码语言:txt
复制

这样,WkWebView /移动Safari中的iframe就可以使用会话cookies了。

推荐的腾讯云相关产品:腾讯云移动浏览器(Tencent Mobile Browser),它是腾讯云推出的一款基于Blink内核的移动浏览器,支持WkWebView,并提供了丰富的开发者工具和接口,方便开发者进行移动端网页开发和调试。产品介绍链接地址:https://cloud.tencent.com/product/tmb

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

使用IdentityServer出现过SameSite Cookie这个问题吗?

首先,如果您 Web 应用程序和身份验证服务器使用单独域,那么 Chrome 这种更改很可能会破坏部分用户会话体验。第二个问题是它还可能使您部分用户无法再次正确注销您系统。 1....在这种情况下,应用程序会创建一个用户不可见 iframe,并在该 iframe 再次启动身份验证过程。...IdP 网站在 iframe 中加载,如果浏览器沿 IdP 发送会话 cookie,则识别用户并发出新令牌。 现在 iframe 存在于托管应用程序域中 SPA ,其内容来自 IdP 域。...如果没有,请确保在这些版本 Safari 测试您应用程序或网站。 如果您根本不设置 SameSite 值,您只需 Chrome 打开您应用程序并打开开发人员工具即可。...我不能简单地等待我身份验证服务器供应商我解决这个问题吗? 这是不太可能我们这里具体示例,实际上管理 cookie 不是 IdentityServer 本身。

1.5K30

WKWebView饼干处理方式

曲奇饼 如何将NSHTTPCookieStorage同步给WKWebview,大概要处理很多种情况,包括但不限于以下; 初次加载页面时,同步cookie到WKWebview 处理ajax请求时,需要...WKWebview cookie是怎么存储 会话级别的cookie 会话级别的cookie是保存在WKProcessPool里,每个WKWebview都可以关联一个WKProcessPool实例...未过期cookie 有效期cookie被持久化存储NSLibraryDirectory目录下Cookies/文件夹。...-D59B-4A15-A50B-774D3D01FADE/data/Library/Cookies,,大概就是后者Cookie是iOSSafari使用。...所以我们方案是 - 页面加载过程不去设置allHTTPHeaderFields,全部使用默认Cookie mananger管理,这样就不会有Cookie污染也不会有302 Cookie丢失问题了

1.2K20
  • Hybrid App 应用 开发 9 个必备知识点复习(WebView 调试 等)

    WKWebView 页面样式问题 WKWebView 适配过程,我们发现部分 H5 页面元素位置向下偏移或被拉伸变形,追踪后发现主要是 H5 页面高度值异常导致。...参考文章:《iOS之Safari调试webView/H5页面》 一般我们通过 Mac Safari浏览器 来调试,但是要注意两点: 如果调试是 APP WebView 页面,则需要这个...开启 Safari 开发菜单 先将 iPhone 连接到 Mac, Mac Safari 偏好设置,开启开发菜单。...具体步骤Safari -> 偏好设置… -> 高级 -> 勾选菜单栏显示“开发”菜单。...调试 APP 内 WebView 参考文章:《前端 WEBVIEW 指南之 IOS 调试篇》 Safari-> 开发,看到自己设备以及 WebView 中网页,点击后即可开启对应页面

    3.1K00

    Hybrid App 应用开发 9 个必备知识点复习

    UIWebView 限制了; WKWebView 目前缺少关于页码相关 API; WKWebView 提供加载网页进度属性; WKWebView 使用 Safari 相同 JavaScript... WKWebView 白屏时候,另一种现象是 webView.titile 会被置空, 因此,可以 viewWillAppear时候检测 webView.title 是否空来 reload 页面...WKWebView 页面样式问题 WKWebView 适配过程,我们发现部分 H5 页面元素位置向下偏移或被拉伸变形,追踪后发现主要是 H5 页面高度值异常导致。...开启 Safari 开发菜单 先将 iPhone 连接到 Mac, Mac Safari 偏好设置,开启开发菜单。...具体步骤Safari -> 偏好设置… -> 高级 -> 勾选菜单栏显示“开发”菜单。

    2.7K20

    H5如何与原生App通信?

    *Mobile.*/), //是否移动终端 ios: !!u.match(/\(i[^;]+;( U;)? CPU....但需要注意是,Safari浏览器使用浏览器控件和UIwebView组件并不是同一个,两者性能上有很大差距。...RN容器 react-native开发,从rn 0.37版本开始官方引入了组件,安卓调用原生浏览器,IOS默认调用是UIWebView容器。...m.douyu.com' }} /> WebView组件不要嵌套在或原生点击组件,会造成H5内页面滚动失效 h5向ios客户端发送消息; ios,并没有现成api让js去调用native方法,...这种js调用方式与ios一样,使用iframe来调用native方法。 通过webview页面里直接注入原生js代码方式,使用addJavascriptInterface方法来实现。

    6K20

    【Hybrid】288- Hybrid App 应用开发 9 个必备知识点复习

    限制了; WKWebView 目前缺少关于页码相关 API; WKWebView 提供加载网页进度属性; WKWebView 使用 Safari 相同 JavaScript 引擎; WKWebView... WKWebView 白屏时候,另一种现象是 webView.titile 会被置空, 因此,可以 viewWillAppear时候检测 webView.title 是否空来 reload 页面...WKWebView 页面样式问题 WKWebView 适配过程,我们发现部分 H5 页面元素位置向下偏移或被拉伸变形,追踪后发现主要是 H5 页面高度值异常导致。...开启 Safari 开发菜单 先将 iPhone 连接到 Mac, Mac Safari 偏好设置,开启开发菜单。...具体步骤Safari -> 偏好设置… -> 高级 -> 勾选菜单栏显示“开发”菜单。

    2.3K20

    Hybrid App 应用开发 9 个必备知识点复习

    限制了; WKWebView 目前缺少关于页码相关 API; WKWebView 提供加载网页进度属性; WKWebView 使用 Safari 相同 JavaScript 引擎; WKWebView... WKWebView 白屏时候,另一种现象是 webView.titile 会被置空, 因此,可以 viewWillAppear时候检测 webView.title 是否空来 reload 页面...WKWebView 页面样式问题 WKWebView 适配过程,我们发现部分 H5 页面元素位置向下偏移或被拉伸变形,追踪后发现主要是 H5 页面高度值异常导致。...开启 Safari 开发菜单 先将 iPhone 连接到 Mac, Mac Safari 偏好设置,开启开发菜单。...具体步骤Safari -> 偏好设置… -> 高级 -> 勾选菜单栏显示“开发”菜单。

    2.3K30

    谁能帮我们顺利过渡到没有三方 Cookie 未来?

    还是上面的例子,我们站点 A 通过 iframe 嵌入了一个站点 C,正常情况下如果三方 Cookie 被禁用后,C 是无法 A 站点访问到它 Cookie 。...它只会在站点 A 通过 iframe 嵌入站点 C 时才会生效,浏览器会判定只会在顶级站点 A 时才发送该 Cookie。...当用户访问一个新站点时,例如站点 B,如果也它通过 iframe 嵌入了站点 C,这时站点 B 下站点 C 是无法访问到之前 A 下面设置那个 Cookie 。...这就在保护了用户隐私情况下完美的解决了 iframe 页面三方 Cookie 问题,完美 ~ 下面是启用了 CHIPS 后 Cookie 分区键变化: 试用 CHIPS 将在 Chrome 100...如果想在本地试用,可以 Chrome Canary 打开 chrome://flags/#partitioned-cookies 标志: 完整提案:https://github.com/WICG/

    77820

    真挺简单

    c.window_handles #返回当前会话所有窗口句柄 3、设置延时 c.set_script_timeout(5) #设置脚本延时五秒后执行 c.set_page_load_timeout...切换iframe 我们知道网页中有一种节点叫作 iframe,也就是子 Frame,相当于页面的子页面,它结构和外部网页结构完全一致。...Selenium打开页面后,默认是父级 Frame 里面操作,而此时如果页面还有子 Frame,Selenium是不能获取到子 Frame 里面的节点。...有时候页面操作可能要有很多步,那么这时候可以使用鼠标行为链类ActionChains来完成。...那么获取不可用元素之前,会先等待10秒时间 driver.implicitly_wait(10) 显示等待:显示等待是表明某个条件成立后才执行获取元素操作。

    4.6K20

    WKWebView 那些坑

    WKWebView 拥有60fps滚动刷新率、和 safari 相同 JavaScript 引擎等优势。...B、检测 webView.title 是否空 并不是所有H5页面白屏时候都会调用上面的回调函数,比如,最近遇到一个高内存消耗H5页面上 present 系统相机,拍照完毕后返回原来页面的时候出现白屏现象...WKWebView白屏时候,另一种现象是 webView.titile 会被置空, 因此,可以 viewWillAppear 时候检测 webView.title 是否空来 reload 页面...实践发现 WKWebView 实例其实也会将 Cookie 存储于 NSHTTPCookieStorage ,但存储时机有延迟,iOS 8上,当页面跳转时候,当前页面的 Cookie 会写入 NSHTTPCookieStorage...不过这种方法依然解决不了页面 iframe 跨域请求 Cookie 问题,毕竟-[WKWebView loadRequest:]只适合加载 mainFrame 请求。

    4.6K130

    WKWebView 那些坑

    作者:林泽水 导语 WKWebView是苹果在WWDC 2014上推出新一代webView组件,用以替代UIKit笨重难用、内存泄漏UIWebView, 拥有60fps滚动刷新率、和safari...1.2、检测webView.title是否空 并不是所有页面白屏时候都会调用上面的回调函数,比如,最近遇到一个高内存消耗H5页面上present系统相机,拍照完毕后返回原来页面的时候出现白屏现象...WKWebView白屏时候,另一种现象是webView.titile会被置空, 因此可以viewWillAppear时候检测webView.title是否空来reload页面。...实践发现WKWebView实例其实也会将Cookie存储于NSHTTPCookieStorage,但存储时机有延迟,iOS8上,当页面跳转时候,当前页面的Cookie会写入NSHTTPCookieStorage...不过这种方法依然解决不了页面iframe跨域请求Cookie问题,毕竟-[WKWebView loadRequest:]只适合加载mainFrame请求。

    17.3K21

    【Web技术】582- 聊聊 Cookie “火热” SameSite 属性

    Cookie 查看 ---- 我们可以浏览器开发者工具查看到当前页面的 Cookie: ?...当会话性 Cookie 时候,值保存在客户端内存,并在用户关闭浏览器时失效。...与会话性 Cookie 相对是持久性 Cookie,持久性 Cookies 会保存在用户硬盘,直至过期或者清除 Cookie。这里值得注意是,设定日期和时间只与客户端相关,而不是服务端。...如果 max-Age 属性正数时,浏览器会将其持久化,即写到对应 Cookie 文件。 当 max-Age 属性负数,则表示该 Cookie 只是一个会话性 Cookie。...、天猫内嵌淘宝登录页面等,由于 Cookie 失效,付款、登录等操作都会失败 阿里妈妈各大网站比如今日头条,网易,微博等投放广告,也是用 iframe 嵌入,没有了 Cookie,就不能准确进行推荐

    1.8K20

    WKWebView详解

    您可以使用WKWebView类来应用程序嵌入web内容,通过创建一个WKWebView对象,将其设置视图,并发送一个请求来加载web内容。...不等 页面加载完成后,估算进度保持1.0,直到新导航开始,这时估算进度重置0.0 支持KVO 是否页面所有资源都是通过安全链接加载 @property(nonatomic, readonly...WKDataDetectorTypeLink类型,浏览器将会对页面“Visit apple.com” 字符串 “apple.com”添加链接 指定URL Scheme添加处理器(WKURLSchemeHandler...; 默认值YES 设置NO将会禁用页面加载或执行JavaScript 但这个配置不会影响用户script 是否可以没有用户操作情况下自动打开窗口 @property (nonatomic)...defaultText是输入框展示默认文本 frameJavaScript进程发起这次调用 输入界面被解除之后调用completionHandler来回调给页面,点击确定传输入框文本,取消传

    20.6K193

    【DB笔试面试700】Oracle,如何彻底杀掉会话?V$SESSIONSTATUSKILLED如何找到后台OS进程?

    ♣ 题目部分 Oracle,如何彻底杀掉会话?V$SESSIONSTATUSKILLED情况下如何找到相关后台OS进程?...当SESSION是ACTIVE时候,ALTER SYSTEM KILL SESSION只是将SESSION状态标识KILLED,SERVER变为PSEUDO状态,但可能并不会立即释放SESSION...所有所持有的资源,所以,执行完ALTER SYSTEM KILL SESSION后,会话还是一直存在(V$SESSION视图中存在,且后边OS进程也存在)。...所以,执行命令KILL SESSION时候,可以在后边加上IMMEDIATE,这样没有事务情况下,相关会话就会立即被删除而不会变为KILLED状态(V$SESSION视图中不存在),当有事务存在情况下...另外,由于变为KILLED状态会话PADDR列都变成了另外一个值,因此,通过平常连接方式就没有办法关联到后台进程,Oracle 11g下提供了CREATOR_ADDR列,该列可以关联到后台进程,

    2.3K10
    领券