cordova-plugin-inappbrowser
cordova-plugin-inappbrowser copied to clipboard
feat: add request headers and cookies as new options
trafficstars
Platforms affected
- iOS
- Android
Motivation and Context
It's currently not possible to set cookies and request headers when opening the IAB.
Description
I'm adding two new options:
- headers
- key/value map json serialized and base64 encoded
- cookies
- key/value map json serialized and base64 encoded
- key is the cookie URL
- value is the json serialized and base64 encoded header Set-Cookie string
Limitations
- iOS Cookies are set only if iOS11+
Testing
From JS side open the IAB with following options:
const headers = {
Authorization: `Bearer exampleAccessToken`,
};
const headersString = JSON.stringify(headers);
//Needed because JS->Native parameters serialization uses = to key/value separator
const headersBase64 = btoa(headersString).replaceAll('=', '@');
const cookieOption: CookieSerializeOptions = {
domain: 'www.mydomain.com',
secure: true,
path: '/',
sameSite: 'strict',
};
const serializedCookie = cookie.serialize(
'TEST_NAME',
'TEST_VALUE',
cookieOption,
);
const cookies = {
['https://www.mydomain.com']: serializedCookie,
};
const cookiesString = JSON.stringify(cookies);
//Needed because JS->Native parameters serialization uses = to key/value separator
const cookiesBase64 = btoa(cookiesString).replaceAll('=', '@');
const options = {
cookies: cookiesBase64,
headers: headersBase64,
}
if (options && typeof options !== 'string') {
options = Object.keys(options)
.map((key: string) => `${key}=${(options as InAppBrowserOptions)[key]}`)
.join(',');
}
var ref = cordova.InAppBrowser.open('https://apache.org', '_blank', options);
Checklist
- [?] I've run the tests to see all new and existing tests pass ()
- [?] I added automated test coverage as appropriate for this change
- [x] Commit is prefixed with
(platform)if this change only applies to one platform (e.g.(android)) - [x] If this Pull Request resolves an issue, I linked to the issue in the text above (and used the correct keyword to close issues using keywords)
- [ ] I've updated the documentation if necessary
Hi @janpio, can you take a look at this PR?
Setting headers is a feature that I would also very much like to see :)
+1 to @Crylion This would be a really great addition! :)
Is it possible to merge this?
This would be a nice feature. @lubbo
@jcesarmobile Can this be merged?