Skip to content

Commit 047961f

Browse files
seraj-ahmadfacebook-github-bot
authored andcommitted
Added Cookie Header to XML and Websocket request
Summary: Continuation of Pull Request facebook#7167 facebook#7167 Needed to clean my repository. So created this Pull Request Closes facebook#10575 Differential Revision: D4955291 Pulled By: shergin fbshipit-source-id: 94b9a086b7cf70ee6cc152d0b1a36c260140450e
1 parent bea7659 commit 047961f

File tree

3 files changed

+30
-1
lines changed

3 files changed

+30
-1
lines changed

Libraries/Network/RCTHTTPRequestHandler.mm

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,9 @@ - (NSURLSessionDataTask *)sendRequest:(NSURLRequest *)request
6363
callbackQueue.maxConcurrentOperationCount = 1;
6464
callbackQueue.underlyingQueue = [[_bridge networking] methodQueue];
6565
NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
66+
[configuration setHTTPShouldSetCookies:YES];
67+
[configuration setHTTPCookieAcceptPolicy:NSHTTPCookieAcceptPolicyAlways];
68+
[configuration setHTTPCookieStorage:[NSHTTPCookieStorage sharedHTTPCookieStorage]];
6669
_session = [NSURLSession sessionWithConfiguration:configuration
6770
delegate:self
6871
delegateQueue:callbackQueue];

Libraries/Network/RCTNetworking.mm

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -228,7 +228,19 @@ - (RCTURLRequestCancellationBlock)buildRequest:(NSDictionary<NSString *, id> *)q
228228
NSURL *URL = [RCTConvert NSURL:query[@"url"]]; // this is marked as nullable in JS, but should not be null
229229
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:URL];
230230
request.HTTPMethod = [RCTConvert NSString:RCTNilIfNull(query[@"method"])].uppercaseString ?: @"GET";
231-
request.allHTTPHeaderFields = [self stripNullsInRequestHeaders:[RCTConvert NSDictionary:query[@"headers"]]];
231+
232+
// Load and set the cookie header.
233+
NSArray<NSHTTPCookie *> *cookies = [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookiesForURL:URL];
234+
request.allHTTPHeaderFields = [NSHTTPCookie requestHeaderFieldsWithCookies:cookies];
235+
236+
// Set supplied headers.
237+
NSDictionary *headers = [RCTConvert NSDictionary:query[@"headers"]];
238+
[headers enumerateKeysAndObjectsUsingBlock:^(NSString *key, id value, BOOL *stop) {
239+
if (value) {
240+
[request addValue:[RCTConvert NSString:value] forHTTPHeaderField:key];
241+
}
242+
}];
243+
232244
request.timeoutInterval = [RCTConvert NSTimeInterval:query[@"timeout"]];
233245
request.HTTPShouldHandleCookies = [RCTConvert BOOL:query[@"withCredentials"]];
234246
NSDictionary<NSString *, id> *data = [RCTConvert NSDictionary:RCTNilIfNull(query[@"data"])];

Libraries/WebSocket/RCTWebSocketModule.m

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,20 @@ - (void)dealloc
6060
RCT_EXPORT_METHOD(connect:(NSURL *)URL protocols:(NSArray *)protocols headers:(NSDictionary *)headers socketID:(nonnull NSNumber *)socketID)
6161
{
6262
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:URL];
63+
64+
// We load cookies from sharedHTTPCookieStorage (shared with XHR and
65+
// fetch). To get secure cookies for wss URLs, replace wss with https
66+
// in the URL.
67+
NSURLComponents *components = [NSURLComponents componentsWithURL:URL resolvingAgainstBaseURL:true];
68+
if ([components.scheme.lowercaseString isEqualToString:@"wss"]) {
69+
components.scheme = @"https";
70+
}
71+
72+
// Load and set the cookie header.
73+
NSArray<NSHTTPCookie *> *cookies = [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookiesForURL:components.URL];
74+
request.allHTTPHeaderFields = [NSHTTPCookie requestHeaderFieldsWithCookies:cookies];
75+
76+
// Load supplied headers
6377
[headers enumerateKeysAndObjectsUsingBlock:^(NSString *key, id value, BOOL *stop) {
6478
[request addValue:[RCTConvert NSString:value] forHTTPHeaderField:key];
6579
}];

0 commit comments

Comments
 (0)