Когда я отправляю почтовый запрос через инструмент Почтальон, все работает нормально.он показывает куки и логин, но когда я пытаюсь войти из браузера, он успешно отправляет ответный логин, но не отправляет куки, а когда я проверяю куки в опции разработчика, он не показывает куки.
«Извините, я не знаю, где я столкнулся с проблемой, поэтому я скопировал больше кода»
Я использую 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