CSRF non funziona su proxy CORS

1

Sto consumando servizi OData da JQuery e sto girando in uno scenario tipico di Same Origin Policy. Non ho il controllo sul server e quindi non posso implementare CORS, quindi l'unica cosa che posso fare è usare un proxy per bypassare la stessa politica di origine. In particolare, utilizzo cors-anywhere ovunque . Ma ho provato altri e ho ancora lo stesso problema.

Quindi, comunque, fino ad allora è tutto bello, sono in grado di salvare la situazione con il proxy e di eseguire la mia chiamata ajax senza problemi, ma funziona solo per le richieste GET. Perché ora il server richiede anche un token CSRF per POST, PATCH, ecc. E assomiglia al token che ottengo tramite una chiamata al server attraverso il proxy:

nonèvalidoperlemiesuccessiverichiesteconsecutivealserver.Inoltre,notocheognivoltarichiedountokenCSRFcomequesto( link ) Ne ottengo uno diverso, che non sta accadendo se faccio la richiesta senza usare il proxy ( link ). Quindi, la mia domanda è:

Qualcuno potrebbe essere in grado di spiegare perché questo sta accadendo e, in tal caso, c'è un modo per superare questo problema per poter fare richieste da JS?

Finora ho provato un certo numero di cose come riscrivere Host, Referrer, Origin e altre intestazioni nel proxy senza successo e anche se potrei davvero usare un po 'di aiuto da questa saggia comunità qui. Qualsiasi commento o suggerimento benvenuto.

Saluti,

    
posta megalucio 19.05.2017 - 21:19
fonte

3 risposte

1

Non sono sicuro se questo si applica in questo caso, ma ho pensato che potrebbe essere utile per alcune persone.

I token CSRF vengono a volte rifiutati perché ogni richiesta consecutiva non conserva i cookie impostati sulla richiesta precedente. Questo è probabile perché il token CSRF è memorizzato come cookie proprio o più spesso, all'interno di un cookie di sessione che cambierà se Set-Cookie viene ignorato.

    
risposta data 26.05.2017 - 18:36
fonte
1

Per quanto posso dire, suona come cors-anywhere sta memorizzando nella cache il token CSRF quando non dovrebbe essere. Avrei eseguito wireshark sul server del nodo e confermato che le richieste vengono inoltrate al server di destinazione ogni volta.

Se ciò non funziona, proverei a eseguire cors-anywhere su una macchina diversa. Ho visto alcuni comportamenti imprevisti con i cookie dei browser quando si utilizza l'host locale e potrebbe esserci qualcosa di simile che accade con le intestazioni delle richieste.

    
risposta data 25.07.2017 - 20:10
fonte
-2

Hai provato $ npm install cors ?? documentazione semplice qui: - link

    
risposta data 26.05.2017 - 13:59
fonte

Leggi altre domande sui tag