我与IOS连接drupal。我在登录时收到了cookies。然后我在URL请求中设置标头中的cookie。我得到Csrf验证失败。请帮忙 。任何帮助将不胜感激。
appdelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
NSLog(@"%@", appdelegate.cookies);
NSString *post =
[[NSString alloc] initWithFormat:@"type=%@&title=%@", @"ss", @"ssd"];
NSData *postData =
[post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
[request setValue:[NSString stringWithFormat:@"%d", [postData length]]
forHTTPHeaderField:@"Content-Length"];
[request addValue:appdelegate.cookies forHTTPHeaderField:@"Cookie"];
[request setHTTPMethod:@"POST"];
[request setHTTPBody:[post dataUsingEncoding:NSUTF8StringEncoding]];
urlConnection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
[urlConnection start];
- (void)connection:(NSURLConnection *)connection
didReceiveResponse:(NSURLResponse *)response {
[receivedData setLength:0];
}
- (void)connection:(NSURLConnection *)connection
didFailWithError:(NSError *)error {
receivedData = nil;
}
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
[receivedData appendData:data];
}
- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
if (receivedData) {
NSDictionary *responseDict =
[NSJSONSerialization JSONObjectWithData:receivedData
options:0
error:nil];
NSLog(@"%@", responseDict);
}
receivedData = nil;
}
答案 0 :(得分:1)
你可以像这样传递cookie
首先,您必须制作用于
NSArray
和FedAuth
等身份验证的Cookie的rtFa
。
let cookieArray = NSArray(objects: cookie1,cookie2)
let cookieHeader = NSHTTPCookie.requestHeaderFieldsWithCookies(cookieArray)
request.allHTTPHeaderFields = NSDictionary(dictionary: cookieHeader)
答案 1 :(得分:0)
Kirit,
你可以试试这个:
[request setValue:sessionCookie forHTTPHeaderField:@“Cookie”]; 要么 [请求setValue:sessionCookie forHTTPHeaderField:@“Set-Cookie”];
它适用于我。