cordova-plugin-inappbrowser icon indicating copy to clipboard operation
cordova-plugin-inappbrowser copied to clipboard

feat: add request headers and cookies as new options

Open lubbo opened this issue 2 years ago • 5 comments
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

lubbo avatar Sep 22 '23 15:09 lubbo

Hi @janpio, can you take a look at this PR?

lubbo avatar Oct 03 '23 06:10 lubbo

Setting headers is a feature that I would also very much like to see :)

Crylion avatar Feb 29 '24 10:02 Crylion

+1 to @Crylion This would be a really great addition! :)

sbl05 avatar Mar 15 '24 12:03 sbl05

Is it possible to merge this?

marcellov7 avatar May 07 '24 18:05 marcellov7

This would be a nice feature. @lubbo

@jcesarmobile Can this be merged?

kucki10 avatar Jul 08 '24 14:07 kucki10