django - Django 不会将请求标头返回给 axios
问题描述
我正在尝试从 django rest 框架后端接收带有 axios 的会话 cookie。我正在使用此处描述的 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有关,但我没有调试它的好方法。
解决方案
推荐阅读
- android - 如何检测 AVB 是否正常运行?
- php - 图像无法在 CI PHP 中升级
- laravel - Git CONFLICT(重命名/删除)修复
- java - 新 Chrome 版本的 Webdrivermanager
- html - 如何将按钮放在图像上方(HTML/CSS)
- c++ - 我有某种薛定谔变量
- python - 如何在 Pandas DataFrame 中获取符合条件的唯一值?
- git - git checkout 给出 zsh: 未找到匹配项:
- java - 如何在java中的字符串(由#,$ ..等特殊字符组成)之间替换所有出现的字符串(变化)
- python - 应用 apply() 后,我得到一个“Series 的真值是不明确的。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()”