Как я могу заставить django прекратить возвращать «Код ответа: 403» в приложение для iPhone

-1

У меня есть следующий быстрый код для моего 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-приложения?

Любая помощь будет очень признательна, большое спасибо, Алан.

Теги:
iphone
django-views

1 ответ

1
Лучший ответ

Звучит как проблема, связанная с защитой CSRF.

Попробуйте украсить представления, к которым обращается приложение iPhone с помощью csrf_exempt.

  • 0
    Просто как тот :)
  • 0
    Я бы проголосовал за тебя, но мне пока не разрешено, потому что я еще не настолько важен, лол. Огромное спасибо.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню