• User Attivo

    Se javascript è disabilitato il sito risponde forbidden 403

    Come si può ottenere questo risultato usando <noscript> nell'head?

    Vorrei precludere l'accesso al sito web (rispondendo forbidden 403) nel caso in cui l'utente avesse javascript disabilitato.


  • User

    ciao
    un modo potrebbe essere questo:

    
    <noscript>
    <meta http-equiv="refresh" content="0"; url=http://tuosito.com/404.html">
    </noscript>
    
    

  • User Attivo

    Ci avevo pensato ma volevo evitare un redirect sull'errore personalizzato 403.
    Mi piacerebbe avere proprio un 403 sulla pagina che l'utente tenta di visualizzare.


  • User Attivo

    @BH said:

    Ci avevo pensato ma volevo evitare un redirect sull'errore personalizzato 403.
    Mi piacerebbe avere proprio un 403 sulla pagina che l'utente tenta di visualizzare.

    Ciao BH

    [HTML]

    <style>
    html, body {
    margin: 0;
    padding: 0;
    height: 100%;
    }

         p {
            margin: 0;
         }
    
         #noscript_padding {
            padding-top: 1.9em;
         }
    
         #noscript_warning {
            position: fixed;
            top: 0;
            left: 0;
            width: 100%;
            z-index: 101;
            text-align: center;
            font-weight: bold;
            color: #FFF;
            background-color: #AE0000;
            padding: 5px 0 5px 0;
         }
    

    </style>

    <noscript>
    <div id='noscript_padding'></div>
    </noscript>
    <div>
    <p>Lorem ipsum dolor sit amet consectetuer tincidunt nunc ac faucibus mattis. Gravida tempus turpis Morbi vitae sed Suspendisse auctor dignissim nulla adipiscing. Adipiscing justo lacinia justo Vivamus Vestibulum amet ut Donec vitae aliquet. Orci tempus orci Donec nibh eget tellus pede semper adipiscing leo. A et id sagittis velit venenatis.</p>
    <p>Tellus ridiculus ipsum pretium condimentum Ut elit sed vitae amet In. Curabitur ipsum elit interdum tortor semper at dolor justo consequat leo. Id fermentum vitae tincidunt pretium lacus leo Cras urna risus urna. Pretium Vestibulum et euismod nec pede et tincidunt condimentum laoreet vel. Dolor vestibulum laoreet habitant a Nulla.</p>
    <p>Lobortis lobortis quis elit mollis quis risus Morbi in augue montes. Mauris ipsum libero tellus et Quisque id non justo nibh dui. Dui nisl at Fusce Curabitur interdum tincidunt sed Vestibulum platea justo. At ut ante eget ac sem sed nulla id nunc mus. Velit In faucibus a auctor Sed Morbi habitasse est urna natoque. </p>
    </div>
    <noscript>
    <div id='noscript_warning'>Please enable Javascript!</div>
    </noscript>

    [/HTML]

    fonte

    [https://stackoverflow.com/questions/15219257/show-message-if-javascript-disabled-on-client-side-using-noscript-tag

    ps: questa e la sezione php, forse dovevi postare nella sezione html 😄
    ](https://stackoverflow.com/questions/15219257/show-message-if-javascript-disabled-on-client-side-using-noscript-tag)


  • User

    io metterei un pop-up


  • User Attivo

    Non è possibile realizzare quello che chiedi, in quanto lo status (403) viene ritornato dal server (il sito) in risposta alla richiesta del client (il browser).

    Dunque non è il client che decide lo status ma il server. E Javascript è un linguaggio lato-client e può interagire solamente con la pagina generata dal server 🙂

    Non vorrei dire una fesseria, ma forse con Node.js si può fare.

    Ad ogni modo potresti provare con la soluzione proposta da chiabgigi, la pagina a cui redirezioni l'utente la chiami 403.php e dentro metti un header() che ritorna uno status 403 Forbidden.

    Altrimenti potresti usare qualche trucchetto (bypassabile) stile CSS, tipo usare opacity:0; sul body, per rendere tutto bianco oppure display:none;


  • Moderatore

    Ciao BH, concordo in pieno con quanto specificato da flaviors200 ed è importante afferrare il concetto di linguaggi lato server e lato client.
    Tieni presente che nel momento in cui il browser percepisce se c'è o meno abilitato js è perchè in quell'istante sta già leggendo il tuo output, per tanto, gli unici redirect che puoi fare sono esclusivamente lato client e salvo giri particolari come quelli proposti, lo status 403 non lo puoi avere in quanto l'header è già stato inviato e trasmesso.
    Node.js potrebbe essere un compromesso alla tua operazione e farebbe al caso tuo, ma implica che sul server siano installate diverse librerie e non è di così facile utilizzo.

    Detto questo, vorrei che capissi l'importanza di ciò che stai facendo.
    Quello che tenti di fare è Bloccare/Impedire l'accesso ad una pagina, se js è disabilitato, rispondendo con un 403 che attenzione, non è un errore generico, ma bensì accesso riservato. Leggi attentamente quanto segue:

    L'errore 403 è uno degli errori più comuni tra quelli restituiti da un web server. Il codice HTTP 403 o 403 Forbidden, più precisamente, corrisponde ad un "divieto": significa che l'accesso alla risorsa richiesta è vietato per il richiedente. In altre parole il web server è stato configurato per interdire l'accesso ad una data risorsa e, pertanto, restituirà un messaggio di errore a chi cercherà di accedervi.

    In altre parole, la domanda che ti devi porre è: è meglio restituire un avviso con delle istruzioni mediante le quali l'utente sarà abilitato, oppure generare un errore di accesso che l'utente visitatore non sa come risolvere?


  • Moderatore

    @Alex_2019 said:

    [

    ps: questa e la sezione php, forse dovevi postare nella sezione html 😄
    ](https://stackoverflow.com/questions/15219257/show-message-if-javascript-disabled-on-client-side-using-noscript-tag)
    In realtà la sezione è corretta.
    Ti chiedo soltanto che i commenti come questo sopra, se non si hanno le basi e la conoscenza tecnico specifica, sono da evitare.
    Ciò non toglie che appoggio la tua risposta in quanto quello che cerca di fare è errato di base.