Comments (1)
Ok - did even more digging and have some interesting takeaways.
iOS cookie behavior:
It seems that WKWebView
will set cookies that have a max age to WKHTTPCookieStore
. A few seconds later, the cookie will also be set to HTTPCookieStorage
. Deleting the cookie will remove it from WKHTTPCookieStore
, but not from HTTPCookieStorage
until the app has been killed and reopened.
This behavior was observed using a sample repo I created. The repo contains two basic projects:
- An iOS project that contains a
WKWebView
and cookie watchers. - A NextJS project that has create cookie and destroy cookie buttons.
I have only observed this behavior on a physical device, so you must point the web view to your machines local IP address. Cookie events are logged to the Xcode console.
Here are the practical implications:
Let's say I have a project with Capacitor Cookies turned on. The project points to a web portal that authenticates with NextAuth.
Upon logging in, a new auth cookie is added to WKHTTPCookieStore
. This new cookie does not trigger CapacitorCookieManager.setCookie
for some reason, but that fine because the operating system(?) will add it to HTTPCookieStorage
a few seconds later.
I am then brought back to landing screen which creates another cookie for managing my hamburger menu state (i.e. open or closed). This does trigger CapacitorCookieManager.setCookie
, so the cookie is added to HTTPCookieStorage
and then HTTPCookieStorage
is synced to WKHTTPCookieStore
. Everything still seems to be fine.
I now log out. The auth cookie is removed from WKHTTPCookieStore
, but not immediately from HTTPCookieStorage
. I am brought back to the landing page, thus updating the hamburger menu cookie and triggering CapacitorCookieManager.setCookie
, so auth cookie HTTPCookieStorage
is synced to HTTPCookieStorage
to WKHTTPCookieStore
. I am stuck in a logged in state.
If I leave the Capacitor Cookies plugin disabled, the syncing never happens so I am never stuck logged in.
Questions:
- It seems like the Capacitor Cookies plugin is meant to keep
WKHTTPCookieStore
andHTTPCookieStorage
in sync in a timely manner. Is that correct? - Should all cookies be intercepted by
CapacitorCookieManager
or are there certain types of cookies that cannot be intercepted?
from capacitor.
Related Issues (20)
- [Feature]: Panoramic images HOT 1
- [Bug]: HttpRequestHandler.java for Android has parseJSON Exception problem HOT 1
- [Feature]: native camera resolution, rotation and max size settings HOT 2
- [Bug]: iOS crash in Http Plugin HOT 4
- [Bug]: Can't Inspect WebView on iOS when setup with SPM HOT 2
- Allow to set minSdkVersion outside of android folder[Feature]: HOT 3
- [Bug]: Custom Native iOS Code Plugin not Registered HOT 1
- [Bug]: <input capture> opens file picker instead of camera on Google Pixel running Android 14 HOT 2
- Please add onWindowFocusChanged to the bridge[Feature]:
- [Bug]: iOS App fails to build with 'WKWebView+Capacitor.h: No such file or directory' after migrating existing app to Cap v6 HOT 1
- [Bug]: capacitor/[email protected] conflicts with capacitor/[email protected] HOT 7
- [Bug]: HTTP-Plugin on iOS: load events not fired HOT 3
- [Bug]: XHR onreadystatechange not working for non POST requests HOT 2
- [Feature]: Allow encrypting cookies before storing them
- [Bug]: duplicate values in `packageClassList` HOT 4
- [Bug]: Android live reload doesn't work, but build works fine. Error: java.lang.IllegalArgumentException: allowedOriginRules HOT 6
- [Bug]: Capacitor Preferences API not worked when Trash the App. HOT 2
- [Feature]: Add a flag for `ios run` to allow for building with Rosetta enabled HOT 4
- [Bug]: HOT 2
- [Bug]: Error: "IDnow" plugin is not implemented on ios HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from capacitor.