Я пытаюсь получить сессионный cookie-файл с axios из бэкэнда остального фреймворка django. Я использую сессии django, описанные здесь .
Когда я делаю сообщение из командной строки с httpie, я вижу несколько заголовков, включая Set-Cookie
с токеном сеанса:
http post http://example.com:8000/api/ key1=val1 key2=val2
HTTP/1.1 201 Created
Allow: POST, OPTIONS
Content-Length: 83
Content-Type: application/json
Date: Thu, 17 Jan 2019 08:47:16 GMT
Server: WSGIServer/0.2 CPython/3.6.7
Set-Cookie: session=e30:1gk3KW:PVn6Pgj-gZQhQue6plWCAONePR4;
Domain=*; expires=Thu, 31 Jan 2019 08:47:16 GMT; HttpOnly; Max-
Age=1209600; Path=/; SameSite=Lax
Vary: Accept, Cookie, Origin
X-Frame-Options: SAMEORIGIN
{
<response params>
}
Но когда я делаю это из axios, единственным заголовком ответа является Content-Type: application/json
.
Я выбрал подход к кухонной мойке с настройками CORS:
CORS_ORIGIN_ALLOW_ALL = True
CORS_ALLOW_CREDENTIALS = True
SESSION_COOKIE_DOMAIN = '*'
CSRF_COOKIE_DOMAIN = '*'
CORS_ALLOW_HEADERS = default_headers + (
'Set-Cookie',
)
CORS_EXPOSE_HEADERS = (
'Set-Cookie',
)
но безрезультатно.
Вид мало что делает:
def post(self, request):
request.session.create()
request.session.save()
return super().create(request)
и не код аксиоса:
axios.post(
URL,
{
key1: val1,
key2: val2,
}
)
.then(response => {whatever(response)})
Я пытаюсь выяснить, как получать другие заголовки в axios, или, по крайней мере, причина, по которой они не принимаются в первую очередь. У меня такое ощущение, что это как-то связано с CORS, но у меня нет хорошего способа его отладки.