iPhone向Django发送POST请求时,出现CSRF验证失败问题。

14 浏览
0 Comments

iPhone向Django发送POST请求时,出现CSRF验证失败问题。

我从iPhone发送了一个POST请求到Django,但是收到了“CSRF verification failed”的错误信息,我无法完全理解这个错误。我尝试在互联网上寻找一个好的解决方案,但是没有找到。有没有一种简单的方法可以向Django发送POST请求?这是我的代码:\n

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);

0
0 Comments

iPhone发送POST请求到Django并收到CSRF验证失败的错误。出现这个问题的原因是没有正确设置请求头。解决方法是在发送请求时添加一个名为"X-CSRFToken"的请求头,并将CSRF token作为值传递。具体的实现方法如下:

1. 首先需要获取CSRF token。可以参考链接中提供的方法从cookies中获取token。

2. 获取到token后,将其添加到NSMutableURLRequest的请求头中。代码如下:

[request addValue:token forHTTPHeaderField:@"X-CSRFToken"];

需要注意的是,由于不清楚你的代码上下文,上述的token获取方法可能不适用于你的情况,需要根据实际情况进行调整。

关于如何通过GET请求获取token,可以参考Django文档中的相关内容。主要是在一个模板中使用{% csrf_token %}标签来渲染页面。在收到GET请求返回的页面时,提取其中的token,并在后续的POST请求中重复使用。

总结起来,解决这个问题的关键是正确设置请求头,并获取并使用有效的CSRF token。

0
0 Comments

问题出现的原因是在iPhone上通过POST请求向Django服务器发送数据时,出现了CSRF(跨站请求伪造)验证失败的错误。

解决方法是在Django的视图函数中使用csrf_exempt装饰器来禁用CSRF保护。具体代码如下:

from django.views.decorators.csrf import csrf_exempt
@csrf_exempt
def view_without_csrf_protection(request):
    pass

不建议在视图中禁用CSRF保护,因为这是一种绕过安全验证的方法,可能会导致安全问题。

0