Linuchs: CORS-Kopfzeile 'Access-Control-Allow-Origin' fehlt

Moin,

ein Vereinsmitglied (geschlossene Benutzergruppe) hat beim Ajax-Abruf von Vorschlags-Daten während des Tippens diesen Fehler in der Konsole:

Quellübergreifende (Cross-Origin) Anfrage blockiert: Die Gleiche-Quelle-Regel verbietet das Lesen der externen Ressource auf https://shanty-fsd.de/ajax/getLieder.php?such_titel=see. (Grund: CORS-Kopfzeile 'Access-Control-Allow-Origin' fehlt).

Es verwendet Firefox 83 (Windows), ich FF 83 (Ubuntu). Bei mir und einem weiteren Mitglied mit FF (Windows) kommt der Fehler nicht, sondern wie erwartet werden Vorschläge eingeblendet.

Der AjaxRequest kommt von einer Seite unter https://shanty-fsd.de/intern/

Gibt es eine versteckte Einstellung im FF, die „gleiche Quelle” womöglich auf den Ordner bezieht? Kann mir den Fehler nicht erklären. Allerdings sagt mir CORS-Kopfzeile nichts.

Bei Eingabe eines Ortes in remso.eu (öffentlich) kommen die Vorschläge bei ihm fehlerfrei von remso.eu/ajax/ (physisch derselbe Server).

Linuchs

  1. Das Mitglied hat die Web-Adresse https://shanty-fsd.de/... in Google eingegeben und bei den Treffern phantasiert Google ein www. dazu.

    Und wenn Ajax dann die Adresse ohne www befragt, mosert der Browser.

    Man muss wohl damit rechnen, dass der DAU Google für das Internet hält. Trotz pingeliger Fragerei von mir am Telefon konnte ich das nicht erkennen und der Firefox hat wohl auch die URL-Leiste ausgeblendet.

    Wie also muss ich den Ajax-Aufruf gestalten, dass er sowohl für www als auch ohne www funktioniert?

    Linuchs

    P.S. Alles, was Google nicht kennt, ist also für DAU (Dümmste Anzunehmende User) nicht erreichbar. Selbst wenn man denen die URL Zeichen für Zeichen diktiert. Einfach gruselig, aber so wird die Software vorinstalliert.

    1. Hallo Linuchs,

      wenn alles von einer Domain kommt, gib bei den XMLHTTPRequests die Adresse relativ an, dann ist es egal, ob die Seite mit oder ohne www. aufgerufen wurde.

      Gruß
      Jürgen

      1. Hallo Jürgen und Rolf,

        danke für den Tipp. Ich hatte nicht gedacht, dass HOST bei Javascript bekannt ist.

        Jetzt geht es.

        Hätte mir vor einigen Wochen auch das leidige Problem erspart bei Umstellung von http zu https.

        Linuchs

    2. Hallo Linuchs,

      Und wenn Ajax dann die Adresse ohne www befragt, mosert der Browser.

      Wieso tut Ajax nur su? Hast Du den Hostnamen im Javascript stehen?

      Dann greife nicht auf

      https://shanty-fsd.de/ajax/getLieder.php?such_titel=see

      zu, sondern auf

      /ajax/getLieder.php?such_titel=see

      dann übernimmt der Browser Schema, Host und Port von der Seiten-URL.

      Rolf

      --
      sumpsi - posui - obstruxi
  2. Hallo Linuchs,

    aus unserem Wiki:

    „Cross-Origin Resource Sharing (CORS) ist ein Mechanismus, der es Webbrowsern oder auch anderen Webclients ermöglicht, Daten von anderen Domains als eigene Ressourcen zu verwenden. Zugriffe dieser Art sind normalerweise durch die Same-Origin-Policy (SOP) untersagt. CORS ist ein Kompromiss zugunsten größerer Flexibilität im Internet unter Berücksichtigung möglichst hoher Sicherheitsmaßnahmen.“

    Ich habe keine Ahnung, wie man dem Browser untersagt, die CORS-Regeln nicht einzuhalten, aber mit

    Header set Access-Control-Allow-Origin "*"
    

    in der .htacess erlaubst du allen Domainen, Inhalte von deiner Domain zu laden. Anstelle des "*" kannst du auch die Domain angeben, die zugreifen darf.

    https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Origin

    Gruß
    Jürgen