У меня есть следующий быстрый код для моего iPhone-приложения:
var post:NSString = "username=\(username)&password=\(password)"
NSLog("PostData: %@",post);
var url:NSURL = NSURL(string: "http://localhost:8000/straightred/login/")!
var postData:NSData = post.dataUsingEncoding(NSASCIIStringEncoding)!
var postLength:NSString = String( postData.length )
var request:NSMutableURLRequest = NSMutableURLRequest(URL: url)
request.HTTPMethod = "POST"
request.HTTPBody = postData
request.setValue(postLength, forHTTPHeaderField: "Content-Length")
request.setValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type")
request.setValue("application/json", forHTTPHeaderField: "Accept")
var reponseError: NSError?
var response: NSURLResponse?
var urlData: NSData? = NSURLConnection.sendSynchronousRequest(request, returningResponse:&response, error:&reponseError)
let res = response as NSHTTPURLResponse!;
NSLog("Response code: %ld", res.statusCode);
Приведенный выше код дает мне следующий результат в окне вывода xcode:
2015-04-22 20: 30: 03.768 SwiftLoginScreen [2290: 70315] PostData: имя пользователя = test & password = password
2015-04-22 20: 30: 03.821 SwiftLoginScreen [2290: 70315] Код ответа: 403
Ниже представлена часть django views.py (хотя, честно говоря, кажется, что не имеет значения, что здесь указано, поскольку ошибка 403 возвращается до запуска любого кода):
@require_POST
def login(request):
username = request.POST['username']
password = request.POST['password']
user = authenticate(username=username, password=password)
if user and user.is_active:
return HttpResponse("{\"succes:1\" }",content_type = 'application/json')
else:
return HttpResponse("{\"success\":0,\"error_message\":\"Invalid Data\"}",content_type = 'application/json')
Итак, в общем, нужно ли добавить что-то в свое приложение iphone и/или настройку django, чтобы разрешить запросы из моего iPhone-приложения?
Любая помощь будет очень признательна, большое спасибо, Алан.
Звучит как проблема, связанная с защитой CSRF.
Попробуйте украсить представления, к которым обращается приложение iPhone с помощью csrf_exempt.