Rolf B: CORS bei file:// *fluch*

Beitrag lesen

Hallo Ingrid,

führe ich meine Probierseite von localhost aus, bekomme ich den Inhalt meiner Textdatei. Egal ob mode:no-cors oder nicht, egal ob Chrome (75) oder Firefox (69). Läuft unter Windows 10.

Über file:// geht's nicht, mit Unterschieden im Verhalten bei Chrome und FF. Aber vielleicht mache ich ja was falsch?

Chrome:

Führe ich sie via file:// aus, läuft fetch in beiden Fällen ins catch. Im Error-Objekt steht "Failed to fetch", im Stacktrace zusätzlich noch TypeError.

In der Console erscheint noch:

Ohne no-cors:
Fetch API cannot load file:///D:/temp/php/fetch/test.txt. URL scheme must be "http" or "https" for CORS request.

Mit no-cors:
Fetch API cannot load file:///D:/temp/php/fetch/test.txt. URL scheme "file" is not supported.

Firefox:

Führe ich sie via file:// aus, läuft der cors-fetch ins catch. Im Error-Objekt steht "TypeError: NetworkError when attempting to fetch resource.", in der Konsole steht noch Quellübergreifende (Cross-Origin) Anfrage blockiert: Die Gleiche-Quelle-Regel verbietet das Lesen der externen Ressource auf file:///D:/temp/php/fetch/test.txt. (Grund: CORS-Anfrage war nicht http).

Der no-cors Fetch gelingt - gewissermaßen. Er liefert eine response mit body=null und type="opaque".

Testseite (Auszug):

<button id="corsfetcher">Fetch with cors</button>
<button id="nocorsfetcher">Fetch with no-cors</button>
<div id="fetched">
<script>
document.getElementById("corsfetcher").addEventListener("click", fetchCors);
document.getElementById("nocorsfetcher").addEventListener("click", fetchNoCors);
let fetched = document.getElementById("fetched");
   
function fetchCors() {
   handleFetch(fetch("test.txt"));
}

function fetchNoCors() {
   handleFetch(fetch("test.txt", { mode: "no-cors" }));
}

function handleFetch(promise) {
   promise
   .then(
      response => response.text()
   )
   .then(
      text => fetched.textContent = text 
   )
   .catch(
      err => fetched.textContent = err
   )
}
</script>

Rolf

--
sumpsi - posui - clusi
0 58

CORS bei file:// *fluch*

Felix Riesterer
  • javascript
  • sicherheit
  1. 0
    Emil
  2. 0
    Felix Riesterer
  3. 0
    Rolf B
    1. 0
      Christian Kruse
      1. 2
        Christian Kruse
  4. 0
    JürgenB
    1. 0
      Rolf B
      1. 0
        dedlfix
        1. 0
          Felix Riesterer
          1. 1
            dedlfix
          2. 0
            Rolf B
            1. 0
              Felix Riesterer
              1. 0
                Rolf B
                1. 0
                  Felix Riesterer
                2. 0
                  TS
                  • javascript
                  • sicherheit
                  • software
      2. 0
        JürgenB
    2. 0
      Felix Riesterer
      1. 0
        JürgenB
        1. 0
          Felix Riesterer
          1. 0
            Christian Kruse
            1. 0
              Felix Riesterer
              • javascript
              • menschelei
              • sicherheit
              1. 0
                Christian Kruse
                1. 0
                  Felix Riesterer
          2. 0
            JürgenB
            1. 0
              Felix Riesterer
              1. 0
                Rolf B
              2. 0
                JürgenB
  5. -1
    Emil
    1. 0
      dedlfix
  6. 1
    dedlfix
    1. 0
      JürgenB
    2. 0
      Emil
      1. 0
        dedlfix
        1. 0
          Emil
          1. 0
            dedlfix
            1. -1
              Emil
              1. 0
                dedlfix
                1. -2
                  Emil
                  1. 0
                    dedlfix
                    1. 0
                      Emil
                      1. 0
                        dedlfix
                  2. 0
                    Der Martin
            2. 0
              Emil
              1. 0
                dedlfix
    3. 0
      Rolf B
      1. 0
        dedlfix
      2. 0
        dedlfix
      3. 0
        Rolf B
        1. 0
          dedlfix
          1. 0
            Rolf B
            1. 0
              dedlfix
              1. 0
                Rolf B
                1. 0
                  dedlfix
                  1. 0
                    Rolf B
    4. 0
      JürgenB
      1. 0
        dedlfix
        1. 0
          JürgenB