我发送POST请求从IPhone到Django并获得“CSRF验证失败”,我不能完全理解。 我试图通过互联网找到一个好的解决方案,但我不能。 有没有简单的方式发布到Django?iPhone发布到Django并获得CSRF验证失败
这是我的代码:
NSString *post =[NSString stringWithFormat:@"s=aaa&r=k&c=gg"];
NSData *postData = [post dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES];
NSString *postLength = [NSString stringWithFormat:@"%d", [postData length]];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
[request setURL:[NSURL URLWithString:(@"http://localhost:8000/messages/views/")]];
[request setHTTPMethod:@"POST"];
[request setValue:postLength forHTTPHeaderField:@"Content-Length"];
[request setValue:@"application/x-www-form-urlencoded charset=utf-8" forHTTPHeaderField:@"Content-Type"];
[request setHTTPBody:postData];
NSError *error;
NSURLResponse *response;
NSData *urlData=[NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
NSString *data=[[NSString alloc]initWithData:urlData encoding:NSUTF8StringEncoding];
NSLog(data);
我仍然不知道如何获得令牌 –
好了,有了CSRF的想法令牌是服务器具有生成它们为你。这意味着如果没有首先收到令牌(通过GET),就无法进行POST。如果你想在没有GET的情况下做到这一点......这有点问题,因为它会使整个保护机制过时。你也许能够创建一个静态的令牌,但是当别人想出来的时候你会遇到问题。所以......我认为你需要确定如何(或更好,如果)你需要保护措施。 – jro
那么如何通过GET接收令牌? –