CSRF no funciona en el proxy CORS

1

Estoy consumiendo los servicios OData de JQuery y me estoy ejecutando en un escenario típico de la misma política de origen. No tengo control sobre el servidor y, por lo tanto, no puedo implementar CORS, por lo que lo único que puedo hacer es usar un proxy para omitir la misma política de origen. En particular, uso cors-en cualquier lugar . Pero lo intenté con otros y sigo teniendo el mismo problema.

Entonces, de todos modos, hasta entonces todo está bien, puedo guardar la situación con el proxy y ejecutar mi llamada ajax sin ningún problema, pero esto solo funciona para las solicitudes GET. Porque ahora, el servidor también requiere un token CSRF para POST, PATCH, etc. y se parece al token que obtengo a través de una llamada al servidor a través del proxy:

noesválidoparamissiguientessolicitudesconsecutivasalservidor.Además,medoycuentadequecadavezquesolicitountokenCSRFcomoeste( enlace ) Obtengo uno diferente, que no sucede si hago la solicitud sin usar el proxy ( enlace ). Entonces, mi pregunta es:

¿Alguien podría explicar por qué sucede esto y, de ser así, hay alguna forma de superar este problema para poder realizar solicitudes de JS?

Hasta ahora he intentado varias cosas, como volver a escribir Host, Referrer, Origin y otros encabezados en el proxy sin éxito, y aunque realmente podría utilizar la ayuda de esta comunidad inteligente aquí. Cualquier comentario o sugerencia de bienvenida.

Saludos,

    
pregunta megalucio 19.05.2017 - 21:19
fuente

3 respuestas

1

No estoy seguro de si esto se aplica en este caso, pero pensé que podría ser útil para algunas personas.

Los tokens CSRF a veces se rechazan porque cada solicitud consecutiva no conserva las cookies que se configuraron en la solicitud anterior. Esto es probable porque el token CSRF se almacena como su propia cookie o más a menudo, dentro de una cookie de sesión que cambiará si se ignora Set-Cookie.

    
respondido por el Adam Lindsay 26.05.2017 - 18:36
fuente
1

Por lo que puedo decir, parece que cors-Anywhere está almacenando en caché el token CSRF cuando no debería estarlo. Ejecutaría wireshark en su servidor de nodo y confirmaría que sus solicitudes se reenvían al servidor de destino cada vez.

Si eso no funciona, intentaría ejecutar cors-en cualquier lugar en una máquina diferente. He visto algún comportamiento inesperado con las cookies de los navegadores al usar el host local, y puede que ocurra algo similar con los encabezados de solicitud.

    
respondido por el user52472 25.07.2017 - 20:10
fuente
-2

¿Has probado $ npm install cors ?? documentación fácil aquí: - enlace

    
respondido por el Karthik 26.05.2017 - 13:59
fuente

Lea otras preguntas en las etiquetas