【发布时间】:2022-01-07 08:55:08
【问题描述】:
我在 React 和 Django Rest Framework 中使用 Axios 和 dj-rest-auth。从 GCP 迁移到 Azure 并删除未维护的 django-rest-auth 后,我遇到了一些新的 CSRF 问题。
最初我删除了django-rest-auth,并从Django.contrib.auth.views 创建了我自己的LoginView。注意到这也给了开发中的 CSRF 错误。所以我添加了dj-rest-auth,它在本地解决了我的问题。推送到 AKS,但那里的 cookie 仍然没有出现。我怀疑我的入口是问题所在,它可以为我的后端和前端设置INGRESSCOOKIE,但没有 CSRF。
我知道关于这个主题有一百万张票,我的 Django 设置很好,设置了 set-cookie 响应标头。还要使用正确的 axios 设置来确保如果 cookie 存在,它会用于请求。问题实际上在于 set-cookie 没有通过,因为它是在 Django 中创建的。
我在静态 IP 上使用带有 TLS 的 Nginx 控制器,并且我的入口定义如下:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: basic-ingress
annotations:
kubernetes.io/ingress.class: nginx
cert-manager.io/cluster-issuer: letsencrypt-prod
nginx.ingress.kubernetes.io/rewrite-target: /
kubernetes.io/ingress.allow-http: "true"
spec:
tls:
- hosts:
- XXXXX
secretName: tls-secret
rules:
- host: XXXXXXXX
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: frontend
port:
number: 80
- path: /api/
pathType: Prefix
backend:
service:
name: backend
port:
number: 8080
【问题讨论】:
标签: nginx cookies django-rest-framework csrf nginx-ingress