在标题字段中设置Cookie

时间:2015-02-18 06:45:06

标签: ios objective-c drupal drupal-7 drupal-modules

我与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;
}

2 个答案:

答案 0 :(得分:1)

  

你可以像这样传递cookie

     

首先,您必须制作用于NSArrayFedAuth等身份验证的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”];

它适用于我。