如何在iOS中获取CSRF令牌?

Joe*_*lin 8 iphone django ios

所以我试图将表单数据发布到我的同事的网站,以便从我的iPhone应用程序登录(简单的用户名和密码).但是,似乎我需要一个CSRF令牌才能发布.我已经对此进行了大量的研究,并从我可以使用GET 获取此令牌csrftoken cookie(我在此处阅读:https://docs.djangoproject.com/en/dev/ref/contrib/csrf/)请求.问题是,我不知道这个GET请求到底是做什么的?我从哪里来?

这是我的帖子请求到目前为止的代码:

NSURL *url = [NSURL URLWithString:SERVER_ADDRESS];
NSData* postData= //Some form data
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
[request setHTTPMethod:@"POST"];
[request setValue:[NSString stringWithFormat:@"%d", postData.length] forHTTPHeaderField:@"Content-Length"];
[request setValue:@"application/x-www-form-urlencoded charset=utf-8" forHTTPHeaderField:@"Content-Type"];
[request setHTTPBody:postData];

[request addValue:token forHTTPHeaderField:@"X-CSRFToken"];  //Where do I get this token from

NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request
                                                              delegate:self];
[connection start];
Run Code Online (Sandbox Code Playgroud)

我知道在StackOverflow上有很多类似的帖子,但是我没有找到任何看似完整的答案.通常它只是指示我上面的链接,其中只填充了AJAX相关信息.非常感谢帮助!

Seb*_*zny 0

正如评论中所指出的,您可以从朋友网站上包含表单的任何页面解析它。

如果您想要一个属于您自己的模板,请让他在以下位置渲染此模板:/ios/

ios.html:

{% csrftoken %}
Run Code Online (Sandbox Code Playgroud)

然后发起GET 请求:2 您可以使用正则表达式解析令牌的值:

NSString *regex = @"csrfmiddlewaretoken\".*?\"\(.*?\)\"";
Run Code Online (Sandbox Code Playgroud)

X-CSRFToken最后,您必须在以下 HTTP POST 请求中设置 的值。