Help ?authenticity_token

Ciao a tutti,
spero vivamente qualcuno sappia aiutarmi, perchè il mio cervello se ne
sta andando in fumo.

Sto lavorando su un progetto rails utilizzando Eclipse, e sulla consolle
del server mi appare:

10.0.0.18 - - [27/Aug/2008:17:27:13 ora solare Europa occidentale] “GET
/statusboard/passengers_list?authenticity_token=d7a2c76ad629384322cd97e9f145684da5533e0e
HTTP/1.1” 304 0
http://10.0.0.18:3000/statusboard/passengers_landings_list/4
/statusboard/passengers_list?authenticity_token=d7a2c76ad629384322cd97e9f145684da5533e0e

questo succede ogni secondo e di conseguenza mi blocca tutto il sistema,
non riesco più a gestire Internet Explorer.

Qualcuno sa spiegarmi cosa significa?

Premetto: il progetto l’ho raccolto da un’altra persona.

Grazie mille anticipatamente a tutti.

è normale è il log del server

On Wed, Aug 27, 2008 at 5:36 PM, Catiana T.
[email protected] wrote:

questo succede ogni secondo e di conseguenza mi blocca tutto il sistema,
non riesco più a gestire Internet Explorer.

in che senso?

che c’entra internet explorer con la console? e perché ti blocca il
sistema?

Oscar Del ben wrote:

� normale � il log del server

Prima di tutto grazie per aver risposto.

Hai ragione, è il log del server, il problema è che questa richiesta:

10.0.0.18 - - [27/Aug/2008:17:27:12 ora solare Europa occidentale] “GET
/statusboard/passengers_list?authenticity_token=d7a2c76ad629384322cd97e9f145684da5533e0e
HTTP/1.1” 304 0

avviene ogni secondo, e credo essere questo il motivo per cui si blocca
il sistema.
Quello che non riesco a capire è perchè la richiesta viene fatta ogni
secondo.

scusa, magari è una banalità .

allora devi cercare nel codice sorgente l’azione che la genera e capire
a
cosa serve. Questo purtroppo lo puoi fare solo tu. Come suggerimento
prova
a cercare authenticity_toke e vedere che risultati ti da.

2008/8/27 Catiana T. [email protected]:

Hai ragione, è il log del server, il problema è che questa richiesta:

10.0.0.18 - - [27/Aug/2008:17:27:12 ora solare Europa occidentale] “GET
/statusboard/passengers_list?authenticity_token=d7a2c76ad629384322cd97e9f145684da5533e0e
HTTP/1.1” 304 0

avviene ogni secondo, e credo essere questo il motivo per cui si blocca
il sistema.
Quello che non riesco a capire è perchè la richiesta viene fatta ogni
secondo.

credo che l’applicazione usi AJAX per aggiornare continuamente
qualcosa. di più non so dirti, non conoscendo l’applicazione.

però è strano che ti inchiodi la macchina, quindi mi chiedo:

  1. che computer hai? non è che ha poca memoria, o è molto lento?

  2. l’environment dell’applicazione è development o production?
    (dovrebbero cambiare le prestazioni…)

  3. l’applicazione, in sostanza, fa cose “pesanti”?

molte applicazioni web fanno richieste AJAX continue al server (oddio,
magari non proprio ogni secondo), e di solito la cosa non crea
problemi.

credo che l’applicazione usi AJAX per aggiornare continuamente
qualcosa. di pi� non so dirti, non conoscendo l’applicazione.

per� � strano che ti inchiodi la macchina, quindi mi chiedo:

  1. che computer hai? non � che ha poca memoria, o � molto lento?

  2. l’environment dell’applicazione � development o production?
    (dovrebbero cambiare le prestazioni…)

  3. l’applicazione, in sostanza, fa cose “pesanti”?

molte applicazioni web fanno richieste AJAX continue al server (oddio,
magari non proprio ogni secondo), e di solito la cosa non crea
problemi.

si faccio una richiesta AJAX di questo tipo:
<%=periodically_call_remote(:url => {:action => “index”},
:frequency => 30, :layout=>false, :update => ‘status’ ) %>

il fatto è che va bene per le prima 10 chiamate poi inizia a fare queste
richieste ogni secondo.

Grazie mille, davvero.

Catiana

Qualcuno sa spiegarmi cosa significa?

è difficile diagnosticare il problema ma un’idea: il log dice che c’è un
redirect, visto che il codice di stato è 304.

Visto che si parla di autenticazione, è probabile che ci sia un
before_filter che controlla se l’utente è autenticato, forse potrebbe
esserci un ciclo di redirect che non viene risolto, nel senso che il
browser richiede /foo e viene mandato su /foo?token=456 e da li su
/foo?token=123 etc… senza che l’autenticazione venga mai portata a
termine.

AFAIK il browser dopo un po’ di redirect dovrebbe fermarsi quindi non
sono per niente sicuro che possa essere un problema ma forse in
congiunzione con le richieste ajax frequenti si innesca qualcosa di
malvagio.

Send instant messages to your online friends

Il parametro autenticity_token è aggiunto da Rails alle richieste quando
viene attivata la protect_from_forgery (vedi
ActionController::RequestForgeryProtection::ClassMethods).
Dovrebbe esserci però solo sulle POST.

Dal log mi pare di capire che il browser chiami
/statusboard/passengers_landings_list/4 e che da lì venga poi ridiretto
a
/statusboard/passengers_list?authenticity_token=d7a2c76ad629384322cd97e9f145684da5533e0e

Perché la ridirezione avvenga ogni secondo non te lo so dire;
bisognerebbe avere il codice della tua applicazione. Potresti però
controllare tutto il log precedente, oppure inserire del codice di debug
dentro il metodo passengers_landings_list di statusboard_controller o
nel Javascript che fa le chiamate Ajax sul browser.

Non sarebbe neppure male controllare che cosa esattamente ritorna il
server al browser in tutta la catena delle richieste, ma non so se si
può fare con Internet Explorer. Usando Firefox con l’estensione Firebug
invece lo vedi dalla console (di Firebug) dove puoi vedere header e body
di richieste e risposte, oltre che a mettere breakpoint nel Javascript e
tante altre cose molto utili in fase di sviluppo e debug. Provalo, te lo
consiglio anche se dovessi fare un’applicazione che poi girerÃ
esclusivamente su IE.

Paolo

Oscar Del ben wrote:

allora devi cercare nel codice sorgente l’azione che la genera e capire
a
cosa serve. Questo purtroppo lo puoi fare solo tu. Come suggerimento
prova
a cercare authenticity_toke e vedere che risultati ti da.

ok grazie…
sei stato gentilissimo!

Catiana