Как создать ключ CSRF Django для приложений для iPhone и Android, которые хотят отправить запрос POST? - PullRequest
2 голосов
/ 16 декабря 2010

Вот в чем дело:

Прямо сейчас в шаблоне моего сайта есть {% csrf_token%}, который позволяет моему сайту отправлять POST-запрос формы.

Но что, если мое приложение для iPhone (клиент) захочет отправить запрос POST на мой веб-сервис?Как дать приложению iPhone токен CSRF, который он может временно использовать?

Ответы [ 2 ]

5 голосов
/ 16 декабря 2010

Ваша цель - повторно использовать существующую форму?Если это так, приложение для iPhone должно получить страницу с формой, а затем POST, используя токен CSRF.Весь смысл токенов CSRF заключается в том, что сервер должен их генерировать.

Ваша цель - аутентифицировать приложение iPhone, чтобы другие приложения не могли POST к вашему API?Это червь, потому что любой секрет, который вы даете своему приложению для iPhone, может прочитать любой, кто скачал приложение.

0 голосов
/ 23 февраля 2019

Вы можете настроить JsonResponse с уникальным ключом, таким как этот, в вашем представлении.

# Add in header
from django.http import JsonResponse
from django.middleware.csrf import get_token

...

Вызвать следующий метод в вашем views.py с помощью GETметод и «секретная» строка запроса

def code(request):
    if(request.method == 'GET' and request.GET.get('secret', False) == 'CHANGE_ME'):
        token = get_token(request)
        return JsonResponse({'token': token, 'success': 'true'})
    else:
        return JsonResponse({'error': 'true', 'msg': 'Invalid secret'})

Как только вы получите CSRF, вы можете отправить свой метод POST с необходимой вам информацией.

Я использую Django 3.dev иpython3

...