可以在ajax请求的响应中获取django设置的cookie

时间:2018-07-12 21:29:14

标签: ajax django axios django-cors-headers

cors-headers在我的django服务器上启用cors。我的setting.py就是这样。

CORS_ORIGIN_ALLOW_ALL= True
CORS_ALLOW_CREDENTIALS = True

我也将corsheaders添加到了INSTALLED_APPS中,而我的MIDDLEWARE就是这样

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',

]。 我设置了一个非常简单的视图,看起来像这样。

    def get(self, request):

    response = HttpResponse("hi")
    response['Set-Cookie'] = ('food=bread; Path=/; max_age=10000')
    print(response._headers)
    return response

在控制台上,标题是这样的。

{'set-cookie': ('Set-Cookie', 'food=bread; drink=water; Path=/; max_age=10000'), 'content-type': ('Content-Type', 'text/html; charset=utf-8')}

当我在浏览器cookie中调用我的api时,一切都正常,但是当我在响应正文中将axios用于ajax时,没有什么类似于我的cookie。 我喜欢这样的javasctipt代码。

 axios.get('http://37.130.202.188:13434/users/test/',
  {withCredentials: true,

 })
  .then(function (response) {
    console.log(response);
  });

然后我使用此命令运行服务器

python manage.py runserver

每一次对这种头痛的反应将不胜感激。

1 个答案:

答案 0 :(得分:0)

我找到了答案。就像this question一样,在Java脚本中无法访问http响应的标头中设置的cookie,它们会自动保存在浏览器中。