не можете установить куки с ajax и Django rest-framework api, но с почтальоном это работает? - PullRequest
0 голосов
/ 01 июня 2019

Когда я отправляю почтовый запрос через инструмент Почтальон, все работает нормально.он показывает куки и логин, но когда я пытаюсь войти из браузера, он успешно отправляет ответный логин, но не отправляет куки, а когда я проверяю куки в опции разработчика, он не показывает куки.

«Извините, я не знаю, где я столкнулся с проблемой, поэтому я скопировал больше кода»

Я использую Django-rest-registration: https://github.com/apragacz/django-rest-registration И этоcors-header: https://github.com/ottoyiu/django-cors-headers

мои настройки CORS в Django-проекте ...

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'rest_registration',
    'rest_framework',
    'corsheaders',
]



MIDDLEWARE = [
    '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',
    'corsheaders.middleware.CorsMiddleware',
    'django.middleware.common.CommonMiddleware',
]

CORS_ORIGIN_WHITELIST = [
    'localhost:63342',
]
#CORS_ORIGIN_ALLOW_ALL = True
CORS_ALLOW_HEADERS = (
    'accept',
    'accept-encoding',
    'authorization',
    'content-type',
    'dnt',
    'origin',
    'user-agent',
    'x-csrftoken',
    'x-requested-with',
    'cache-control',
    'content-length',
    'Host',
    'Connection',
)

Это код почтальона, который прекрасно работает ...

var settings = {
  "async": true,
  "crossDomain": true,
  "url": "http://localhost:8000/api/v1/accounts/login/",
  "method": "POST",
  "headers": {
    "Content-Type": "application/json",
    "User-Agent": "PostmanRuntime/7.13.0",
    "Accept": "*/*",
    "Cache-Control": "no-cache",
    "Postman-Token": "7d5ae21a-9f8c-4178-a2bf-265a53fbfd3f,b500d1d0-4f89-4b2a-a4cc-3aeb5a4e5e62",
    "Host": "localhost:8000",
    "accept-encoding": "gzip, deflate",
    "content-length": "50",
    "Connection": "keep-alive",
    "cache-control": "no-cache"
  },
  "processData": false,
  "data": "{\n\t\"login\": \"temp1\",\n\t\"password\": \"password\"\n}"
}

$.ajax(settings).done(function (response) {
  console.log(response);
});

Это мой код ...

var data = {
        "login": 'temp1',
        "password": 'password',
    };

    $.ajax({
        "async": true,
        "crossDomain": true,
        "url": 'http://localhost:8000/api/v1/accounts/login/',
        "method": "POST",
        "dataType": "json",
        "data": JSON.stringify(data),
        "contentType": "application/json",
        success: function (data, status, xhr) {
            console.log(data);
            console.log(xhr.getAllResponseHeaders());
        },
        error(){
            console.log("Encountered an error");
        }
    });

это ответ журнала консоли:

{detail: "Login successful"}
signup.js:53 content-type: application/json

Это заголовок

General:
Request URL: http://localhost:8000/api/v1/accounts/login/
Request Method: POST
Status Code: 200 OK
Remote Address: x.x.x.x:8000
Referrer Policy: no-referrer-when-downgrade

Response Header:
Access-Control-Allow-Origin: http://localhost:63342
Allow: OPTIONS, POST
Content-Length: 29
Content-Type: application/json
Date: Sat, 01 Jun 2019 10:33:00 GMT
Server: WSGIServer/0.2 CPython/3.6.7
Vary: Accept, Origin, Cookie
X-Frame-Options: SAMEORIGIN

Request Headers:
Provisional headers are shown
Accept: application/json, text/javascript, */*; q=0.01
Content-Type: application/json
DNT: 1
Origin: http://localhost:63342
Referer: http://localhost:63342/projects/adminca/dist/dealord/html/login.html?_ijt=lfam8cst2sqq9c213bcpdp6l2p
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36

...