es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

La cookie CSRF no está configurada, posiblemente bloqueada por el ingreso de Kubernetes.

Utilizo Axios en React y Django Rest Framework con dj-rest-auth. Después de migrar de GCP a Azure y eliminar el no mantenido django-rest-auth, tuve algunos nuevos problemas CSRF.

Inicialmente eliminé django-rest-auth y creé mi propia LoginView desde Django.contrib.auth.views. Noté que esto también dio error CSRF en desarrollo. Así que agregué dj-rest-auth, lo que resolvió mi problema localmente. Lo empujé a AKS, pero allí la cookie aún no aparece. Sospecho que mi ingress es el problema, que puede establecer INGRESSCOOKIE tanto para mi backend como para mi frontend, pero no CSRF.

Sé que hay millones de tickets sobre este tema, mi configuración de Django está bien, la respuesta del encabezado set-cookie está establecida. También utilizo la configuración de Axios correcta para asegurarme de que si la cookie está allí, se utiliza para solicitudes. El problema es realmente con el hecho de que la set-cookie no llega, ya que se crea en Django.

Utilizo un controlador Nginx con TLS en una dirección IP estática y tengo mi ingreso definido de la siguiente manera:
yaml
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:
- XXXX
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

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    El problema que enfrenta el usuario está relacionado con CSRF y la cookie que no aparece después de migrar de GCP a Azure. El usuario intentó resolver el problema eliminando ‘django-rest-auth’ y creando su propia LoginView desde Django.contrib.auth.views. Sin embargo, notó que esto también provocaba un error de CSRF en desarrollo. Para resolver esto, el usuario agregó ‘dj-rest-auth’, lo que solucionó el problema localmente. Sin embargo, cuando se empujó a AKS, la cookie todavía no aparece. El usuario sospecha que el ingreso es el problema, ya que puede establecer ‘INGRESSCOOKIE’ tanto para el backend como para el frontend, pero no para CSRF.

    El ingreso del usuario está definido mediante un archivo de configuración YAML, que utiliza el controlador Nginx con TLS en una dirección IP estática. El ingreso está definido con reglas que especifican el host y las rutas para los servicios de frontend y backend. El ingreso se anota con ‘kubernetes.io/ingress.class: nginx’, cert-manager.io/cluster-issuer: letsencrypt-prod’, ‘nginx.ingress.kubernetes.io/rewrite-target: /’ y ‘kubernetes.io/ingress.allow-http: “true”‘.

    El usuario ha revisado su configuración de Django y confirmó que el encabezado de respuesta set-cookie está establecido. También están utilizando la configuración correcta de Axios para asegurarse de que, si la cookie está allí, se utilizará para las solicitudes. Sin embargo, el problema está realmente en el hecho de que la set-cookie no está llegando, ya que se está creando en Django.

    Para resolver el problema, el usuario debería verificar la configuración de Nginx para asegurarse de que el ingreso esté configurado correctamente para pasar la cookie al frontend. También deben verificar el backend para asegurarse de que el token CSRF se está generando correctamente y que la cookie se está estableciendo cuando el usuario inicia sesión. Finalmente, deben verificar su configuración de Axios para asegurarse de que están enviando correctamente la cookie para las solicitudes.

Comments are closed.