Проблема заключается в том, что при наличии содержимого внутри тела с методом OPTIONS второй запрос всегда будет завершаться с сообщением Метод не разрешен .Распечатал журнал и показал, что метод стал "{"username":"test","password":"test"}POST /member/login/ HTTP/1.1" 405 111
.Проблема в том, что после перезапуска сервера первый запрос OPTIONS пройдет нормально.Попробовал только с POST, и он отлично работает.Эта проблема есть только у OPTIONS.
ENV: python: 3.6.5, django: 2.1.3, drf: 3.9.0, django-cors-headers: 2.4.0
views.py (Показывать только украшения, потому что оно не вошло в блок):
@csrf_exempt
@api_view(['POST'])
@authentication_classes([])
@permission_classes([AllowAny])
def member_login(request):
pass
middlewares:
MIDDLEWARE = [
'corsheaders.middleware.CorsMiddleware',
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
Метод запроса: ОПЦИИ и POST
Заголовок запроса:
Content-Type: application/json
Origin: http://google.com
Access-Control-Request-Method: POST
Access-Control-Request-Headers: X-PINGOTHER,Content-Type
Тело запроса:
{"username":"superuser","password":"pass1234"}
После отправки запроса OPTIONS 2 раза:
INFO 2018-12-25 02:26:03,585 "OPTIONS /member/login/ HTTP/1.1" 200 0
WARNING 2018-12-25 02:26:10,180 Method Not Allowed: /member/login/
WARNING 2018-12-25 02:26:10,182 "{"username":"superuser","password":"pass1234"}OPTIONS /member/login/ HTTP/1.1" 405 98
После получения ошибки, когда метод не разрешен, невозможно отправить любой другой запрос в API.Он всегда будет возвращать Метод не разрешен , даже если я использую другой метод.
WARNING 2018-12-25 02:30:57,939 Method Not Allowed: /member/login/
WARNING 2018-12-25 02:30:57,940 "{"username":"superuser","password":"pass1234"}POST /member/login/ HTTP/1.1" 405 95
WARNING 2018-12-25 02:30:58,603 Method Not Allowed: /member/login/
WARNING 2018-12-25 02:30:58,603 "{"username":"superuser","password":"pass1234"}POST /member/login/ HTTP/1.1" 405 95
WARNING 2018-12-25 02:30:59,684 Method Not Allowed: /member/login/
WARNING 2018-12-25 02:30:59,685 "{"username":"superuser","password":"pass1234"}POST /member/login/ HTTP/1.1" 405 95
Пробовал с более старой версией Django.Эта проблема не произошла.