【发布时间】:2012-12-27 05:00:32
【问题描述】:
所以我试图将表单数据发布到我同事的网站,以便从我的 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];
我知道 StackOverflow 上有很多与此类似的帖子,但我没有找到任何似乎完整的答案。通常它只是将我引导到上面的链接,该链接仅填充了 AJAX 相关信息。非常感谢您的帮助!
【问题讨论】:
-
csrf 令牌在 cookie 中,默认情况下
csrftoken将在同一会话中为同一视图接收。在发布之前,您需要再次请求才能获取此 cookie。 -
你找到解决这个问题的方法了吗?
-
您好友网站上的任何表单都应该在表单中包含令牌。您可以从网站上的任何形式解析 html。否则,请他在网站上创建一个仅显示 csrf 令牌的页面。