首页 > 解决方案 > 如何使用 Capacitor Browser 插件操作/清除 cookie

问题描述

我需要清除使用 Capacitor Browser Plugin 打开的网站的 cookie。我找不到办法。

在 Capacitor Browser 插件中有一个“browserPageLoaded”侦听器,这是放置我的代码的理想位置,但我仍然找不到任何访问 cookie 的方法。您如何从那里访问 cookie?

标签: cookiesionic4capacitor

解决方案


不幸的是,这是不可能的,浏览器插件在 iOS 上使用 SFSafariViewController,在 Android 上使用 Chrome 自定义选项卡,出于安全原因不共享 cookie,请在此处查看答案https://github.com/ionic-team/capacitor-plugins/问题/7。要解决这个问题,您可以使用 Cordova 的 inAppBrowser,它也适用于 Capacitor https://ionicframework.com/docs/native/in-app-browser。在选项中有“clearcache”和“clearsessioncache”。选项和示例列表可在以下链接https://cordova.apache.org/docs/en/latest/reference/cordova-plugin-inappbrowser/中找到。

例子:

安慰:

npm install cordova-plugin-inappbrowser
npm install @ionic-native/in-app-browser
ionic cap sync

代码:

import {
  InAppBrowser,
  InAppBrowserObject,
  InAppBrowserOptions,
} from "@ionic-native/in-app-browser/ngx";

constructor(private iab: InAppBrowser) {}

createNewPageBrowserInApp(url, target) {
    if (this.iab) {
      this.currentPageInAppBrowser = this.iab.create(
        url,
        target,
        this.options(inAppBrowserType)
      );
    }
  }

options(inAppBrowserType: InAppBrowserType): InAppBrowserOptions {
    switch (inAppBrowserType) {
      case InAppBrowserType.NavigationPage: {
        console.log("InAppBrowserType.NavigationPage");
        return {
          toolbarcolor: "#FFFFFF",
          location: "yes",
          hidden: "no",
          clearcache: "yes",
          clearsessioncache: "yes",
          zoom: "yes", //Android only
          hardwareback: "yes",
          mediaPlaybackRequiresUserAction: "no",
          hidenavigationbuttons: "no",
          navigationbuttoncolor: "#428bca",
          hideurlbar: "yes",
          shouldPauseOnSuspend: "no", //Android only
          disallowoverscroll: "no", //iOS only
          usewkwebview: "yes", //iOS only
          toolbar: "yes", //iOS only
          enableViewportScale: "no", //iOS only
          allowInlineMediaPlayback: "yes", //iOS only
          presentationstyle: "pagesheet", //iOS only
          fullscreen: "no", //Windows only
          useWideViewPort: "yes",
        };
      }

InAppBrowserType 是一个供内部使用的枚举类型


推荐阅读