Django不会将请求标头返回给axios

时间:2019-01-17 09:02:15

标签: django django-rest-framework axios

我正试图从django rest框架后端接收带有axios的会话cookie。我正在使用here中所述的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代码也没有:

axios.post(
    URL,
    {
        key1: val1,
        key2: val2,
    }
)
.then(response => {whatever(response)})

我试图弄清楚如何在axios中接收其他标头,或者至少是最初没有接收到它们的原因。我感到它与CORS有关,但是我没有调试它的好方法。

0 个答案:

没有答案