我创建了一个Django子类作为我朋友的AFHTTPClient服务器的web服务接口。除了'DELETE‘和'POST’请求之外,我们取得了巨大的成功。他的服务器需要一个CSRF令牌,但我不知道如何获取该信息或在我的AFHTTPClient中使用该信息。当我的应用程序登录时,Django服务器当前会生成一个CSRF (我相信在标题中)。
执行'DELETE‘或'POST’的失败尝试会从他的服务器生成以下JSON响应:"CSRF失败: CSRF令牌丢失或不正确。“
最后,我的问题是:如何使用AFNetworking (特别是AFHTTPClient)管理CSRF令牌?
谢谢。
发布于 2014-01-01 06:23:59
CSRF令牌作为cookie随每个HTTP响应一起发送。您需要将它与每个POST/PUT/…一起发回请求,就像对X-CSRFToken请求所做的那样。另请参见the official documentation。
发布于 2014-08-21 04:33:01
您可以从cookies中获取csrf,如下所示:
+(NSString* ) getCSRFFromCookie{
NSArray* cookies = [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookiesForURL:[NSURL URLWithString:API_SERVER_URL]];
NSLog(@"cookie csrf %@", [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies]);
NSString* strCookieValue=@"";
for(NSHTTPCookie* cookie in cookies) {
if([cookie.name isEqualToString:@"csrftoken"])
return cookie.value;
}
return strCookieValue;}
https://stackoverflow.com/questions/20862976
复制相似问题