Hannes: CORS bei 404

Hallo,

Frage zu CORS:

habe einen Shared Webspace, von dem aus ich von einem anderen Shared Webspace (clientseitig) Daten fetche. Daher habe ich im Access-Control-Allow-Origin Response Header der .htaccess Datei des SpenderWebspace die EmpfängerURL eingetragen.

Funktioniert auch großartig. Als ich dann aber versehentlich versuchte, einen JSON Endpoint zu fetchen, der gar nicht existiert (klassischer Typo...), wurde mir mit der 404 Response gleich eine "Cors Anfrage schlug fehl, Statuscode 404" Fehlermeldung mitgeschickt.

Dieses Verhalten ist mir auch schon auf anderen [durchaus professionellen] Webseiten aufgefallen und macht mich ein wenig stutzig -

Warum schlägt bei 404 die CORS Anfrage fehl, die müsste doch eigentlich erfolgreich sein...?

Oder anders gefragt: sollte ein Server nicht auch bei 404 erstmal die entsprechenden in .htaccess definierten Header schicken?


Dazu gibt es doch sicher entsprechendes Material, für die spannende Samstagabendlektüre 😀

  1. sollte ein Server nicht auch bei 404 erstmal die entsprechenden in .htaccess definierten Header schicken?

    Jein. Kommt immer darauf an, welche Header Du meinst. Bei Angaben zum Caching wäre das möglicherweise großer Mist.

  2. Als ich dann aber versehentlich versuchte, einen JSON Endpoint zu fetchen, der gar nicht existiert (klassischer Typo...), wurde mir mit der 404 Response gleich eine "Cors Anfrage schlug fehl, Statuscode 404" Fehlermeldung mitgeschickt.

    Hm. Wieso erwartest Du etwas anderes? Was hattest Du GENAU vor, was hast Du GENAU gemacht, was GENAU war das Ergebnis und woher GENAU stammt die obige Meldung?

    1. Als ich dann aber versehentlich versuchte, einen JSON Endpoint zu fetchen, der gar nicht existiert (klassischer Typo...), wurde mir mit der 404 Response gleich eine "Cors Anfrage schlug fehl, Statuscode 404" Fehlermeldung mitgeschickt.

      Hm. Wieso erwartest Du etwas anderes? Was hattest Du GENAU vor, was hast Du GENAU gemacht, was GENAU war das Ergebnis und woher GENAU stammt die obige Meldung?

      Die Sachlage, denke ich, habe ich eingangs beschrieben.

      In meiner kleinen Welt schickt der Browser einen Preflight Request los, wenn der bezüglich Cross-Origin Resource Sharing erfolgreich war, kann der Main Request stattfinden, ansonsten CORS Error.

      ...soll heißen, selbst wenn eine Ressource NICHT existiert (404), so sollte doch zumindest der CORS Error ausbleiben... ...was in meinem Fall aber nicht geschieht?

      1. Lieber Hannes,

        In meiner kleinen Welt schickt der Browser einen Preflight Request los, [...] ...soll heißen, selbst wenn [...]

        in meiner Welt (als Musiklehrer) kommt mir da gleich das hier in den Sinn.

        Liebe Grüße

        Felix Riesterer

      2. In meiner kleinen Welt

        halte ich eine Auskunft wie "Cors Anfrage schlug fehl, Statuscode 404" für eine absolut angemessene Reaktion der Entwicklungsumgebung des Browsers auf den 404er Status-Code nach einem Preflight Request hinsichtlich einer nicht exístenten Ressource.

        schickt der Browser einen Preflight Request los,

        Immerhin kann sich der Browser sodann den „Main-“ Request sparen. Oder willst Du ETWA ernsthaft, dass er nach dem OPTIONS-Request ein „OK“ erhält und erst nach einem weiteren, offensichtlich sinnlosem Request den „404er“?

        Dir ist schon klar, dass Requests auch lange dauern können? (Server auf dem Mond, langsamer Client-Anschluss, gekillte TCP-Verbindung…)

  3. Hi,

    habe einen Shared Webspace, von dem aus ich von einem anderen Shared Webspace (clientseitig) Daten fetche. Daher habe ich im Access-Control-Allow-Origin Response Header der .htaccess Datei des SpenderWebspace die EmpfängerURL eingetragen.

    Funktioniert auch großartig. Als ich dann aber versehentlich versuchte, einen JSON Endpoint zu fetchen, der gar nicht existiert (klassischer Typo...), wurde mir mit der 404 Response gleich eine "Cors Anfrage schlug fehl, Statuscode 404" Fehlermeldung mitgeschickt.

    und die URL der 404-Response ist identisch aufgebaut (Protokoll, Servername, Path, ...) wie die der Anfrage, oder findet da evtl. eine Weiterleitung auf eine nicht 100% zur Anfrage passende URL statt, so daß evtl. die .htaccess mit der CORS-Erlaubnis nicht greift?

    cu,
    Andreas a/k/a MudGuard