a me lo scenario è diverso. uso l'handler pe bloccare l'accesso diretto al file.
successivamente apro una pagina che ga il getContent....
a me lo scenario è diverso. uso l'handler pe bloccare l'accesso diretto al file.
successivamente apro una pagina che ga il getContent....
Ciro Marotta - Programmatore JAVA - PHP
Preferisco un fallimento alle mie condizioni che un successo alle condizioni altrui.
l'handler lo uso per impedire l'accesso diretto alla risorsa. Hanno avuto al brillante idea di mettere gli upload sotto la directory public del server. Quindi conoscendo l'url chiunque potrebbe accedere.
Ciro Marotta - Programmatore JAVA - PHP
Preferisco un fallimento alle mie condizioni che un successo alle condizioni altrui.
Ciao,
ok, proteggi l'accesso alla cartella, e tramite l'handler scegli cosa restituire. E fin qui ci siamo.
Quindi, ricapitoliamo:
tizio tenta di scaricare un file chiamando un url dentro la cartella public/upload (tipo public/upload/file.jpg), a questo punto blocchi l'accesso con l'hadler e verifichi l'autenticazione, e qui hai 3 possibilita:
1)il file non esiste, l'azione del handler, indipendentemente dall'autenticazione, è quella di restituire un 404 sulla stessa scheda dalla quale è chiamata
2)il file esiste e l'utente è autenticato, l'azione del handler e quella di far partire il downoload e mandare in download nella stessa scheda (ovviamente se si chiama il link diretto, se apri una nuova pagina che chiama il link, tipo _blanc ecc., questa rimarrà aperta)
3)il file esiste ma l'utente non è autenticato, l'azione è quella di restituire un file di default al posto di quello chiamato, con le stesse modalità del punto 2.
in tutti questi casi, l'handler restituisce la risposta nella stessa scheda o pagina dalla quale è avvenuta la richiesta. Per intenderci:
Se chiami il link da eseguire nella stessa pagina, ovvero se non parte il download ma restituisce 404, ci sarà il cambio di pagina, quindi immaginiamo pagina.aspx (con link alla risorsa protetta)->clicchi sul link e passi alla pagina col 404, se fai indietro con il browser torni a pagina.aspx. Con il download invece pagina.aspx non cambia, ma si apre solo l'eventuale richiesta se salvare o aprire il file.
Mi viene in mente una possibile eccezione (anche se rientra comunque nei casi sopra indirettamente):
Hai il link al di fuori del browser, ad esempio in un programma esterno, e l'utente clicca sul link per scaricare la risorsa, a questo punto magari gestisci l'apertura del link facendo aprire la finestra del browser all'indirizzo del link. In questo caso la finestra normalmente rimarrebbe aperta per via del fatto che comunque la pagina che chiama l'url, ci sarà sempre (infatti se lo fai da dentro il browser, in un una pagina web, anche se parte il download comunque rimani nella pagina, non si chiude al click). In questo caso potresti provare in diversi modi, il più "semplice" se te la cavi meglio con lato client, è quello di cercare di chiudere la pagina da script. Ti potrebbe aiutare il fatto di usare chrome per lanciare il download, mi pare più permissivo. Oppure scavalchi il browser (non lo apri proprio) e al click sul link agisci direttamente a livello di software con una chiamata interna.
Non potresti essere un pò più preciso? cosa fai esattamente, cosa vorresti ottenere, e che problema ti da. Anche se finora a me è sembrato chiaro, non sono tanto certo di non aver tralasciato qualcosa o che non sia ancora saltata fuori.