2009-07-19 11 views
8

Mi scuso per il fatto che esiste già una domanda simile ma vorrei chiedere in modo più generale.Soppressione della finestra di dialogo di autenticazione del browser

Esiste un modo per determinare sul lato client di un'applicazione Web se la richiesta di una risorsa restituisce un codice di stato 401 e fa sì che il browser visualizzi una brutta finestra di autenticazione?

Oppure, c'è un modo per caricare una risorsa audio mp3 in flash che non riesce in modo invisibile nel caso di un codice di stato 401 piuttosto che lasciare che il browser mostri un brutto dialogo?

Il runtime Adobe Air sopprimerà l'autenticazione se imposto la proprietà "authenticate" dell'oggetto URLRequest ma questa proprietà non è nel runtime Flash. Qualsiasi soluzione che funzioni sul client andrà bene. È improbabile che XMLHttpRequest funzioni in quanto le risorse nelle domande si troveranno in domini diversi.

È importante fallire invisibilmente perché l'applicazione avrà un elenco di molte risorse audio da provare e non ha senso disturbare l'utente a provare e autenticarsi per uno quando ce ne sono molti altri disponibili. È importante che la soluzione funzioni sul client perché gli mp3 in questione provengono da vari server fuori dal mio controllo.

risposta

1

Sto riscontrando lo stesso problema con l'API di twitter: qualsiasi utente protetto richiede l'autenticazione del client.

L'unica soluzione che ho potuto inventare era caricare le pagine serveride e restituire un elenco degli URL con il loro codice di risposta http.

+1

L'API di Twitter ha un parametro 'suppress_response_codes', che imporrà la risposta per avere 200 stato OK. –

0

"Esiste un modo per determinare sul lato client di un'applicazione Web se la richiesta di una risorsa restituisce un codice di stato 401 e fa sì che il browser visualizzi una brutta finestra di autenticazione?"

No, non in generale. La risposta 401 è l'unico modo standard per il server di indicare che l'autenticazione è necessaria.

0

Basta accedere alla risorsa che potrebbe richiedere l'autenticazione per una chiamata Ajax. Puoi prendere il codice di risposta e usare javascript per fare quello che vuoi (cioè suonare quel suono). Se il codice di risposta va bene, usa javascript per inoltrare l'utente alla risorsa.

Molto probabilmente questo approccio genererà un carico leggermente maggiore sul server (potrebbe essere necessario ricorrere al caricamento della stessa risorsa più volte in alcune circostanze), ma dovrebbe funzionare. Qualsiasi buon tutorial su come utilizzare XMLHttpRequest dovrebbe contenere tutto ciò di cui hai bisogno. Date un'occhiata per esempio http://www.xul.fr/en-xml-ajax.html

+0

Ajax non funziona su domini diversi, quindi funzionerà solo se la pagina e la risorsa si trovano nello stesso dominio. – zaius

0

Se si utilizza URLRequest per ottenere i file, quindi si sta eseguendo qualcosa di più della semplice gestione degli errori, si sta verificando una differenza fondamentale nei tempi di esecuzione di Flash e AIR.

Se si utilizza l'oggetto URLRequest per recuperare i file si otterrà un errore di sicurezza da Flash su ogni richiesta a ogni server che non ha impostato un file di criteri per consentire questo tipo di richieste. AIR consente queste richieste poiché fondamentalmente è il client. Questo ha senso dal momento che è la differenza tra l'installazione di un'applicazione e la visita di una pagina web.

Odio fornire la mancata risposta, ma se non è possibile effettuare una chiamata sul lato server e si sta colpendo un intervallo di server "non noti", sarà una strada difficile da zappare.

Ma forse ho frainteso, stai solo cercando di collegare i file e impedire all'utente di ottenere collegamenti errati o stai provando a caricare effettivamente i file?

+0

Grazie per il tuo tempo, indipendentemente dal fatto che io possa ottenere ciò che voglio. Sì, sto provando a caricarli ea riprodurli. Tuttavia, non è importante che un qualsiasi URL particolare funzioni, poiché ho molti da provare. –

Problemi correlati