iOS websocket: include cookies with request
Summary: This PR modifies the Websocket implementation on iOS to pass cookies to the server. Sending cookies is useful for clients that wish to access protected Websocket endpoints without creating a new authentication protocol. Closes https://github.com/facebook/react-native/pull/5630 Reviewed By: svcscm Differential Revision: D2881815 Pulled By: martinbigio fb-gh-sync-id: 31c1640626cd15447bdb4f2058ae4e34dfa52f88
This commit is contained in:
parent
6ecfb61147
commit
debcac59d0
|
@ -280,7 +280,23 @@ RCT_NOT_IMPLEMENTED(- (instancetype)init)
|
||||||
|
|
||||||
- (instancetype)initWithURL:(NSURL *)URL protocols:(NSArray<NSString *> *)protocols options:(NSDictionary<NSString *, id> *)options
|
- (instancetype)initWithURL:(NSURL *)URL protocols:(NSArray<NSString *> *)protocols options:(NSDictionary<NSString *, id> *)options
|
||||||
{
|
{
|
||||||
NSURLRequest *request = URL ? [NSURLRequest requestWithURL:URL] : nil;
|
NSMutableURLRequest *request;
|
||||||
|
if (URL) {
|
||||||
|
// Build a mutable request so we can fill the cookie header.
|
||||||
|
request = [NSMutableURLRequest requestWithURL:URL];
|
||||||
|
|
||||||
|
// We load cookies from sharedHTTPCookieStorage (shared with XHR and
|
||||||
|
// fetch). To get HTTPS-only cookies for wss URLs, replace wss with https
|
||||||
|
// in the URL.
|
||||||
|
NSURLComponents *components = [NSURLComponents componentsWithURL:URL resolvingAgainstBaseURL:true];
|
||||||
|
if ([components.scheme isEqualToString:@"wss"]) {
|
||||||
|
components.scheme = @"https";
|
||||||
|
}
|
||||||
|
|
||||||
|
// Load and set the cookie header.
|
||||||
|
NSArray<NSHTTPCookie *> *cookies = [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookiesForURL:components.URL];
|
||||||
|
[request setAllHTTPHeaderFields:[NSHTTPCookie requestHeaderFieldsWithCookies:cookies]];
|
||||||
|
}
|
||||||
return [self initWithURLRequest:request protocols:protocols options:options];
|
return [self initWithURLRequest:request protocols:protocols options:options];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue