繁体   English   中英

如何在iOS中获取CSRF令牌?

[英]How to get CSRF token in iOS?

因此,我试图通过iPhone应用程序将表单数据发布到同事的站点中,以便顺序登录(简单的用户名和密码)。 但是,看来我需要CSRF令牌才能发布。 我已经对此进行了大量研究,并从使用csrftoken cookie (我在此处阅读到的内容: https : csrftoken cookie获得的令牌中进行了研究。 GET请求。 问题是,我不知道该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];

我知道在StackOverflow上有很多与此类似的帖子,但是我还没有找到答案似乎完整的帖子。 通常,它只是将我定向到上面的链接,该链接仅包含AJAX相关信息。 帮助将不胜感激!

正如评论中指出的那样,您可以从朋友网站上包含表单的任何页面中对其进行解析。

如果您自己想要一个,请让他在/ios/渲染此模板。

ios.html:

{% csrftoken %}

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

NSString *regex = @"csrfmiddlewaretoken\".*?\"\(.*?\)\"";

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

为了使用令牌登录(POST),当然,您必须先获得CSRF令牌,如您所说。 如果您先对登录页面进行GET调用(在执行POST之前),则登录页面的结果将返回一个csrf_token,您可以查看是否使用浏览器(具有开放的开发者工具窗格),并查看在响应内容下的网络窗格中,查看服务器设置的csrftoken cookie。 就我而言:

Set-Cookie:csrftoken=PgQEgY3LAynbVeWRIzXoo2VFRLfd8Uqt; expires=Fri, 10-Nov-2017 18:59:54 GMT; Max-Age=31449600; Path=/; secure

从响应中解析出来后,设置一个标题,如下所示:

X-CSRFToken: "PgQEgY3LAynbVeWRIzXoo2VFRLfd8Uqt" 

在您的POST中输入登录名/密码信息。 高温超导

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM