Perché Chrome blocca ajax localmente?

0

Impossibile trovare il dup, quindi fammi sapere se ce n'è uno

Sto provando a creare un sito web statico di una pagina (per ospitarli su neocities). Io uso la funzione load() di jquery per quello. Funziona bene in Firefox (e Edge) ma non in Chrome.

Ecco index.html :

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
</head>
<body>
    <div id="partial-page-load-section"></div>
    <script src="jquery-1.12.4.min.js"></script>
    <script>
        $("#partial-page-load-section").load("partial_page.html");
    </script>
</body>
</html>

ed ecco partial_page.html :

<h1>This is partial page</h1>

Messaggio di errore di Chrome:

Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https.

Screenshot (Chrome uno a sinistra, Firefox a destra):

Domande:

  1. Chrome risolve un qualche tipo di vulnerabilità non permettendomi di fare ciò che sto cercando di fare, cosa che non sarebbe stato possibile risolvere in altro modo se non impedendomi completamente di fare ciò che sto cercando di fare?
  2. Se qualcuno tentasse di sfruttare la vulnerabilità che Chrome sta tentando di risolvere bloccando la mia richiesta, come farebbero a risolverlo?
  3. Significa che Firefox (e Edge) sono (più) vulnerabili a XSS o CORS (o qualcos'altro)?
posta Alex L 24.07.2018 - 17:42
fonte

2 risposte

1

CORS è stratificato su HTTP quindi in qualche modo non ha senso trattare con CORS oltre a http https chrome e chrome-extension dato che gli ultimi 3 probabilmente (mi manca il doc qui) si basano sulle stesse regole di HTTP.

Per il momento qualsiasi altro comportamento del protocollo per CORS non è definito. Così Chrome lo blocca.

Per rispondere a ciascuna domanda individualmente:

1) No, considerano solo che dal momento che il CORS non è definito per altri protocolli, il più sicuro è quello di crash con un errore che dice "non implementato"

2) Poiché 1) la risposta è No, questa domanda non è applicabile. Ma se Chrome lascia la richiesta, allora è il protocollo sconosciuto a gestire correttamente CORS, che probabilmente non verrà eseguito correttamente

3) La differenza tra Firefox e Chrome è che Firefox controlla innanzitutto se le origini del documento del richiedente e la risorsa richiesta sono le stesse (e se così fosse, lascia passare, altrimenti, follow processo CORS ) mentre Chrome segue sempre la procedura CORS prima di verificare la corrispondenza dell'origine.

-Non so quale comportamento segua meglio la specifica di recupero - Sembra che entrambi siano ok poiché parte delle specifiche dice

"file" "ftp"

For now, unfortunate as it is, file and ftp URLs are left as an exercise for the reader.

When in doubt, return a network error.

L'unico danno che ho potuto vedere è che Firefox avrebbe permesso a uno script di visualizzare informazioni sensibili da file:/// sullo schermo, che una spara-spalla avrebbe potuto afferrare. Quindi non è correlato a CORS.

    
risposta data 24.07.2018 - 17:54
fonte
1

Does Chrome solve some kind of vulnerability by not allowing me to do what I am trying to do which would not have been possible to solve in any other way other then completely preventing me from doing what I am trying to do?

Sì, lo è.

Se le pagine web caricate da file:// potevano fare richieste ad altre pagine in file:// , sarebbero in grado di leggere qualsiasi file sul tuo computer , compresi i file sensibili come le chiavi SSH, cookie del browser e password salvate e documenti personali su percorsi noti.

Cambiare questo significherebbe che l'apertura di qualsiasi file HTML sul tuo computer - incluse le pagine Web salvate, così come i documenti HTML distribuiti come documentazione o file readme - potrebbe potenzialmente esfiltrare dati sensibili dal tuo computer. I produttori di browser hanno stabilito che questo è un rischio inaccettabile.

    
risposta data 25.07.2018 - 05:05
fonte

Leggi altre domande sui tag