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.

Agregar CSRF a la solicitud POST de locust para evitar el error de Django – Prohibido (cookie CSRF no configurada).

¿Cómo agregar CSRF a la URL para probar Django desde Locust y prevenir el error “Forbidden (CSRF cookie not set.)”?

Aquí está lo que he intentado:

@task
def some_task(self):
response = self.client.get(“api/test/”)
csrftoken = response.cookies[‘csrftoken’]

self.client.post(
    "api/test/",
    {"csrfmiddlewaretoken": csrftoken},
    headers={"X-CSRFToken": csrftoken},
    cookies={"csrftoken": csrftoken})

El error que obtengo es:

KeyError: “name=’csrftoken’, domain=None, path=None”

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para agregar CSRF a la URL y evitar el error “Forbidden (CSRF cookie not set.)” al probar Django desde Locust, puedes seguir estos pasos:

    1. Envia una solicitud GET a la URL para obtener el token CSRF:
    response = self.client.get("api/test/")
    csrftoken = response.cookies['csrftoken']
    
    1. Envia una solicitud POST a la misma URL con el token CSRF incluido en los encabezados y datos:
    self.client.post(
        "api/test/", 
        {"csrfmiddlewaretoken": csrftoken},
        headers={"X-CSRFToken": csrftoken},
        cookies={"csrftoken": csrftoken}
    )
    

    La variable csrftoken se utiliza para almacenar el valor del token obtenido en la respuesta de la solicitud GET, luego se pasa en los encabezados y datos de la solicitud POST para asegurar que la solicitud esté autenticada.

    Sin embargo, el mensaje de error que estás recibiendo (KeyError: "name='csrftoken', domain=None, path=None") sugiere que es posible que la cookie csrftoken no se haya configurado correctamente. Puedes intentar agregar los parámetros secure=True y httponly=True al establecer la cookie csrftoken para asegurarte de que se configure correctamente:

    self.client.cookies.set('csrftoken', csrftoken, secure=True, httponly=True)
    

    Con estos cambios, deberías poder incluir CSRF en las pruebas de Locust para Django sin encontrar el error Forbidden (CSRF cookie not set.).

Comments are closed.