Fix CDS cookie handling.

pull/1/head
Matthew Chen 7 years ago
parent c368aabf9c
commit 0884598a3a

@ -292,6 +292,10 @@ NS_ASSUME_NONNULL_BEGIN
request.authUsername = authUsername;
request.authPassword = authPassword;
// Don't bother with the default cookie store;
// these cookies are ephemeral.
[request setHTTPShouldHandleCookies:NO];
return request;
}
@ -320,11 +324,11 @@ NS_ASSUME_NONNULL_BEGIN
request.authUsername = authUsername;
request.authPassword = authPassword;
NSDictionary<NSString *, NSString *> *cookieHeaders = [NSHTTPCookie requestHeaderFieldsWithCookies:cookies];
for (NSString *cookieHeader in cookieHeaders) {
NSString *cookieValue = cookieHeaders[cookieHeader];
[request setValue:cookieValue forHTTPHeaderField:cookieHeader];
}
// Don't bother with the default cookie store;
// these cookies are ephemeral.
[request setHTTPShouldHandleCookies:NO];
// Set the cookie header.
[request setAllHTTPHeaderFields:[NSHTTPCookie requestHeaderFieldsWithCookies:cookies]];
return request;
}

@ -117,6 +117,17 @@ typedef void (^failureBlock)(NSURLSessionDataTask *task, NSError *error);
password:request.authPassword];
}
// Honor the request's preferences about default cookie handling.
//
// Default is YES.
sessionManager.requestSerializer.HTTPShouldHandleCookies = request.HTTPShouldHandleCookies;
// Honor the request's headers.
for (NSString *headerField in request.allHTTPHeaderFields) {
NSString *headerValue = request.allHTTPHeaderFields[headerField];
[sessionManager.requestSerializer setValue:headerValue forHTTPHeaderField:headerField];
}
if ([request.HTTPMethod isEqualToString:@"GET"]) {
[sessionManager GET:request.URL.absoluteString
parameters:request.parameters
@ -223,7 +234,6 @@ typedef void (^failureBlock)(NSURLSessionDataTask *task, NSError *error);
OWSLogError(
@"The request contains an invalid parameter : %@, %@", networkError.debugDescription, request);
error.isRetryable = NO;
failureBlock(task, error);

Loading…
Cancel
Save