Support » Allgemeine Fragen » http header der htaccess werden nicht gesendet

  • Gelöst ac2124

    (@ac2124)


    Hallo,

    Wordpress Version 5.2.2. Gleich vorweg: Ich spare zunächst an einer Auflistung aller möglichen technischen Details, da ich mir aktuell keinen Schimmer mehr habe, auf welche Ebene das Problem überhaupt liegen könnte (Webserver, PHP, WordPress, …) bzw. dort wo ich es vermute, fehlen mir genauere Kenntnisse zu den relevanten Files. Ich reiche euch aber alles an Informationen nach (sofern möglich), was eurer Meinung nach relevant sein könnte.

    Zum Problem: Auf der genannten Seite möchte ich wichtige fehlende HTTP Header setzen.
    Also habe ich das Plugin „HTTP Headers“ von Dimitar Ivanov installiert, welches entsprechende Regeln in die htaccess schreiben kann. Die Header kommen jedoch nicht im Browser an.

    Ich habe dann auch ein wenig mit der Position der Regeln innerhalb der htaccess gespielt (da das ab und an wohl einen Unterschied machen soll, der nicht so recht erklärbar sei), leider ohne Ergebnis.

    Also dachte ich an Probleme mit anderen Plugins oder dem Theme. (Alle bereits auf die neueste Version upgedated.) Deshalb habe ich parallel eine 2te WordPressinstallation gemacht und alle Plugins deaktiviert, sowie das Standardtheme „Twenty Nineteen“ beibehalten. Dann habe ich eine Header-Regel in die htaccess geschrieben (außer den Standard WordPressregeln ist da also sonst nichts drin). Doch noch immer kommt der Header nicht im Browser an.

    Als nächstes dachte ich an Problem mit der WordPress-Installation speziell bei meinem Hoster (1und1 Ionos). Also habe ich WordPress von WordPress.org heruntergeladen, auf den Webspace hochgeladen und die Installation selbst durchgeführt. Erneut alle Plugins deaktiviert, das Standardtheme beibehalten. Die Header-Regel in die htaccess geschrieben. Doch noch immer kommt der Header nicht im Browser an.

    Als nächstes dachte ich noch an ein generelles Problem mit WordPress bei meinem Hoster. Also habe ich WordPress auf einem privaten Server installiert (Synology). Habe dort ebenfalls alle Plugins deaktiviert, das Standardtheme beibehalten, die Header-Regel in die htaccess geschrieben. Doch noch immer kommt der Header nicht im Browser an.

    Daraufhin habe ich in allen 3 WordPress-Root-Verzeichnissen eine quasi leere „Test.html“ abgelegt und diese aufgerufen. Ohne Änderungen an der htaccess vorzunehmen kommt der Header beim direkten Aufruf der Test.html im Browser an.

    Möglicherweise auch interessant ist, dass die Header eigentlich immer nur bei dem HTML-Dokument selbst fehlen. Bei zusätzlich getriggerten Requests wie bspw. dem favicon werden die Header wie erwartet ausgeliefert.

    Browserseitiges Caching schließe ich als Fehlerquelle ebenfalls aus, da ich Caching über die jeweiligen Developerkonsolen in Firefox bzw. Chrome deaktiviert habe, den Cache regelmäßig leere und die Zugriffe auch stets von unterschiedlichen Rechnern aus getestet habe.

    Für mich deutet im Moment alles auf ein Problem in WordPress hin. Hier fehlen mir allerdings tiefere Kenntnisse um das nachprüfen zu können und es würde mich eigentlich auch ein wenig wundern, da ich zu Problemen mit fehlenden Headern in WordPress nahezu nichts finden konnte.
    Als weiteres Indiz für ein Problem in WordPress spricht meines Erachtens nach allerdings auch noch, dass wenn das Plugin „HTTP Headers“ die Header nicht über die htaccess setzt, sondern über PHP, dann werden die Header wie gewünscht ausgeliefert (Plugin-Option „Use PHP to send headers“ die der Entwickler jedoch mittlerweile als „deprecated“ kennzeichnet).

    Um ein Problem mit der Version 5.2.2 auszuschließen habe ich zudem das Ganze auch mit der WordPressversion 5.1.1 ausprobiert, aber auch da wurden die Header aus der htaccess nicht ausgeliefert.

    Hat jemand eine Idee, was ich noch versuchen könnte oder wo das Problem liegen könnte?
    Ich bin um jede Hilfe und jeden Hinweis dankbar!

    Mit freundlichen Grüßen,
    Milan Binder

    PS: Auch interessant wäre es (für mich), ob sich das Problem bei anderen reproduzieren lässt, oder ob ich damit alleine stehe.

    Die Seite, für die ich Hilfe brauche: [Anmelden, um den Link zu sehen]

Ansicht von 9 Antworten - 1 bis 9 (von insgesamt 9)
  • Zum Problem: Auf der genannten Seite möchte ich wichtige fehlende HTTP Header setzen.
    Also habe ich das Plugin „HTTP Headers“ von Dimitar Ivanov installiert, welches entsprechende Regeln in die htaccess schreiben kann. Die Header kommen jedoch nicht im Browser an.

    Was möchtest Du erreichen? Was sind denn die fehlenden Header? Woher weißt Du, dass die Header nicht gesendet werden? Hast Du die Entwicklertools Deines Browsers benutzt?

    Da Du einiges geändert hast, empfehle ich Dir, das Plugin zu löschen, die .htaccess zu überprüfen, ob da noch Einträge von dem Plugin drin sind, und das Plugin neu zu installieren. Falls es dann doch nicht wie erwartet funktioniert, wende Dich an das dortige Supportforum.

    Ich kenne das Plugin nicht, weiß aber, dass man mit den Headern, die das Plugin einstellt, einiges falsch machen kann.

    P.S. Ich muss mich korrigieren. Du hast die Entwicklertools benutzt und einiges versucht. Was bleibt:

    – Was willst Du erreichen?
    – Im Supportforum des Plugins anfragen.

    Thread-Starter ac2124

    (@ac2124)

    Hallo hupe13,

    danke für die schnelle Reaktion und deine Hilfsbereitschaft.

    Was will ich erreichen: Ich möchte über die .htaccess-Datei HTTP-Header setzen. Das sollte über eine Headerdirektive in der htaccess (mod_headers) eigentlich kein Problem sein, ist es aber scheinbar, da die Header bei mir nicht entsprechend der Direktiven der .htaccess ausgeliefert werden (geprüft über mehrere Websiten, die auf die entsprechenden Header prüfen und über die Developerkonsolen in Chrome und Firefox). Die HTTP Header können ja auf mehreren Ebenen gesetzt und zurückgesetzt werden. Wenn ich aber eine neue WordPressinstallation habe und eine Headerdirektive in die htaccess schreibe, würde ich erwarten, dass dieser HTTP Header auch ausgeliefert wird.

    Im Supportforum des Plugins nachfragen scheint mir zum aktuellen Zeitpunkt nicht sinnvoll, da ich ja in einer neu aufgesetzten WordPressinstanz ohne das Plugin genau das gleiche Problem habe, dass manuell in der htaccess hinzugefügte Headerdirektiven nicht mit der WordPressstartseite ausgeliefert werden. Die Möglichkeit, dass die htaccess fehlerhaft sein könnte sehe ich als widerlegt an, da wenn ich ein einfaches HTML-Dokument im gleichen Webroot ablege und aufrufe, bei diesem Dokument die gleiche htaccess zu den gewünschten HTTP Headern führt (also bei einem Aufruf ohne das ganze WordPressprocessing, weshalb ich in Richtung Problem mit WordPress dachte).

    Mittlerweile habe ich allerdings noch bei einem 3ten Hoster (Strato) eine WordPressinstanz aufgesetzt. Ebenfalls ohne Plugins und nur mit dem Standardtheme. Hier habe ich die gleiche .htaccess angelegt wie auch auf den anderen WordPressinstanzen: Hier werden die HTTP Header wie gewünscht ausgeliefert. Ich denke daher nicht länger an ein Problem in WordPress. Stattdessen werde ich mit dieser Erkenntnis zunächst erneut auf meinen Hoster zugehen.

    Über weitere Ideen oder Ansätze, wie es zu dem Problem kommen kann, wäre ich natürlich weiterhin dankbar. Vielleicht eine ungünstige Konfiguration im Webserver des Hosters? Vielleicht weiß dazu ja jemand mehr oder hat zumindest einen Hinweis für mich…oder vllt gibt es ja doch auch WordPresskonfigurationen in dieser Richtung >> möglicherweise irgendeine PHP Routine, welche die HTTP Header nochmal bearbeitet und die für gewöhnlich aktiviert ist, und die der Hoster Strato bei seinen automatisierten WordPressinstallationen eben deaktiviert?

    Mit freundlichen Grüßen,
    Milan Binder

    Mit meiner Frage:

    – Was willst Du erreichen?

    dachte ich vor allem an mehr Sicherheit und evtl. Geschwindigkeitszuwachs.
    Wer sich mit Headern beschäftigt, sollte wissen, was er damit erreichen will.

    Bei Strato hoste ich selbst meine Seite (shared Server). Manche Header-Optionen kann man nur serverseitig konfigurieren, nicht in der .htaccess. Der Hoster gibt demzufolge die Optionen vor, als Kunde kann man da nicht alles ändern.

    Thread-Starter ac2124

    (@ac2124)

    Zunächst einmal geht es mir um mehr Sicherheit, also X-XSS-Protection, X-Frame-Options, HSTS, CORS, CSP, … die Standard-Security-Header. Im Anschluss will ich natürlich auch über sinnvolle Caching-Richtlinien (Cache-Control-Header) einen Geschwindigkeitszuwachs erreichen.

    Bei Strato hat das setzten der gewünschten Header über die htaccess ja auch wunderbar funktioniert. Leider hosten wir unsere Website nicht bei Strato…

    Korrigiere mich wenn ich das falsch sehe, aber die htaccess ist eine serverseitige Konfiguration. Was du möglicherweise meinst ist, dass der Hoster verhindert, dass die entsprechenden Header über die htaccess gesetzt werden…? Ich weiß nicht, ob das möglich ist, da kenne ich mich nicht aus, aber selbst wenn es die Möglichkeit gibt: Da die Header bei der Auslieferung einer einfachen HTML Seite, die im gleichen Webrootverzeichnis liegt, korrekt ausgeliefert werden, können wir davon ausgehen, dass die Header prinzipiell über die htaccess gesetzt werden können.

    Es gibt Dinge, die kann nur root, also der Hoster. Der normale Nutzer darf in der .htaccess nur Anweisungen eintragen, welche erlaubt sind.

    Hallo,
    wenn es um Sicherheit geht, gibt es doch genügend plugins, die das leisten. Siehe hier.
    Außerdem kannst Du z. B. schon viel erreichen, wenn Du einen Schutz über .htpasswd einrichtest. Eine Anleitung findest Du z. B. hier.
    Viele Grüße
    Hans-Gerd

    Thread-Starter ac2124

    (@ac2124)

    Hallo,

    dank des IONOS-Supports weiß ich mittlerweile, wo der Hund begraben liegt. Im Grunde eine ziemlich simple Lösung, umso ärgerlicher für mich, dass ich nicht selbst darauf gekommen bin:
    Bei IONOS läuft PHP als CGI. Daher können die Header bei normalen .html-Seiten über die .htaccess geändert werden, wohingegen das bei php nicht geht. Im Netz konnte ich dann noch lesen, dass wenn in der httpd.conf der AllowOverride-Parameter auf enabled gesetzt ist, die Konfiguration über die htaccess auch bei PHP-CGI funktionieren würde (siehe https://stackoverflow.com/questions/4117572/using-htaccess-with-fastcgi), jedoch ist dieser Parameter bei IONOS auf disabled gesetzt.

    @Hans-Gerd Gerhards: wie du sicher gelesen hast, habe ich bereits Plugins ausprobiert (bspw. HTTP Headers). Plugins schaffen aber auch keine neuen Möglichkeiten, sondern bedienen sich vorhandener Möglichkeiten, wie beispielsweise Header setzen über die .htaccess, und übernehmen dann lediglich die „komplizierte“ technische Konfiguration. Möglicherweise hätte sich ein anderes Plugin einer anderen technischen Möglichkeit bedient und daher funktioniert, aber ich wollte zunächst verstehen, warum die Konfiguration über die htaccess nicht funktioniert.
    Und zu deinem 2ten Hinweis: Die Seite über eine htpasswd zu schützen, kann für den Adminbereich sicher sinnvoll sein, ganz sicher ist es aber kein sinnvolles Mittel um bspw. Cross-Site-Scripting auf einer öffentlichen Homepage zu unterbinden.

    Dennoch möchte ich euch beiden für eure investierte Zeit danken.

    Mit freundlichen Grüßen,
    Milan Binder

    • Diese Antwort wurde geändert vor 4 Jahren, 8 Monaten von ac2124. Grund: Ergänzung einer Quelle

    Hallo,

    Und zu deinem 2ten Hinweis: Die Seite über eine htpasswd zu schützen, kann für den Adminbereich sicher sinnvoll sein, ganz sicher ist es aber kein sinnvolles Mittel um bspw. Cross-Site-Scripting auf einer öffentlichen Homepage zu unterbinden.

    … es ging mir ja auch nur darum, Dich auf diese Option hinzuweisen. Natürlich sichere ich damit den Adminbereich und da ist diese Option grundsätzlich schon sehr wirksam. Mehr habe ich dazu auch nicht gesagt.
    Viele Grüße
    Hans-Gerd

Ansicht von 9 Antworten - 1 bis 9 (von insgesamt 9)
  • Das Thema „http header der htaccess werden nicht gesendet“ ist für neue Antworten geschlossen.