Apache: der Unterschied zwischen "Header " immer" und "Header set"?
Fragen
- Was ist der Unterschied zwischen
Header always set
undHeader set
im Apache? - Das ist, was macht die
always
keyword ändern, über die Umstände, unter denen der header gesetzt ist? - Sollte ich immer meine Header mit
always
? - Ist es aus irgendeinem Grund nicht zu?
Hintergrund
Ich gesehen habe...
Header always set X-Frame-Options DENY
...wie auch...
Header always set Access-Control-Allow-Headers "*"
...und ich höre manchmal, dass die Anwesenheit des always
- Schlüsselwort stellt sicher, dass der header korrekt gesetzt ist, oder, dass es einfach besser, die always
keyword im Allgemeinen. Allerdings habe ich nie eine klare, endgültige Antwort für warum das ist der Fall.
Habe ich bereits überprüft die Apache-docs für Sie mod_headers.
, die nur kurz erwähnen always
:
Wenn Ihr handeln ist eine Funktion von einer vorhandenen header, müssen Sie möglicherweise angeben, eine Bedingung, immer, je nachdem, welche internen Tabelle der original-header wurde. Die Tabelle entspricht immer verwendet wird, für lokal generierte Fehlermeldungen als auch erfolgreiche Antworten. Beachten Sie auch, dass die Wiederholung dieser Richtlinie mit beiden Bedingungen Sinn macht, in einigen Szenarien, weil immer ist nicht eine Obermenge von onsuccess in Bezug auf bestehende Header:
- Sie hinzufügen einer Kopfzeile zu einer lokal generierten nicht-Erfolg (nicht-2xx) Antwort, wie eine Umleitung, in diesem Fall nur die Tabelle entsprechend immer verwendet wird, in der ultimativen Antwort.
- Die Sie Bearbeiten oder entfernen einer Kopfzeile generiert, die durch ein CGI-Skript, in welchem Fall die CGI-Skripte sind in der Tabelle entsprechend immer und nicht in die Standard-Tabelle.
- Die Sie Bearbeiten oder entfernen einer Kopfzeile erzeugt, indem ein Stück von dem server, aber dass die header nicht gefunden wird, die von der Standard-onsuccess Zustand.
Soweit ich das beurteilen kann, bedeutet dies, dass Header set always
sorgt dafür, dass der header festgelegt ist, sogar auf nicht-200 Seiten. Aber, meine HTTP-Header set mit Header set
schien immer zu gelten, nur fein auf meine 404-Seiten und so. Bin ich Missverständnis hier etwas?
FWIW, die ich gefunden habe, SO posts wie Was ist der Unterschied zwischen "immer" und "onsuccess" in die Apache-Header config?, aber die einzige Antwort, die es nicht wirklich erklären, es für mich eindeutig.
Vielen Dank,
Caleb
Du musst angemeldet sein, um einen Kommentar abzugeben.
Als die angegebenen bit von das Handbuch sagt, ohne "immer" Ihre Ergänzungen gehen nur auf erfolgreiche Antworten.
Dazu gehören aber auch "erfolgreich" vorwärts-Fehler über mod_proxy und vielleicht andere ähnliche Handler, die in etwa wirken wie proxies. Was generiert den 404, der Sie nicht einverstanden sind mit dem Handbuch? 404 auf eine lokale Datei, sicherlich verhält sich wie die zitierte bit beschreibt.
Apache-API führt zwei Listen mit jeweils einer zugeordneten Anforderung, Kopf-und err_headers. Die ehemaligen wird nicht verwendet, wenn der server auf einen Fehler bei der Verarbeitung der Anfrage die letztere ist.
Kommt es auf die Bedeutung. Lassen Sie uns sagen, Sie waren beim Cache-Control-Header, die waren im Zusammenhang zu dem, was Sie erwartet hatte, zu dienen, für einige Ressourcen. Nun lassen Sie uns sagen, Sie waren eigentlich servieren etwas wie ein 400 oder 502. Sie möchten möglicherweise nicht, dass zwischengespeicherte!
Siehe oben.
-/-
Gibt es auch etwas in der Bedienungsanleitung, die Sie nicht zitieren, die erklärt, dass die CGI-proxy oder ein Fehlercode, aber nicht für eine, die der Apache erzeugt eine Fehler-Antwort für:
ErrorDocument
in einem.htaccess
zu dienen, die 404. In meinemhtaccess
habe ichHeader set X-NotSetWithAlways true
, aber dieser header wird gesendet an die oben erwähnten 404-Seite (/blahblah), das ist, warum ich bin nervös. Irgendwelche Gedanken?onsuccess
. um den header. Sowohl dieErrorDocument
und dieHeader set
Richtlinien sind auf der obersten Ebene von meine.htaccess
, und ich habe bereits versucht durch das vertauschen der Reihenfolge der Direktiven ohne Erfolg. Vielleicht ist es ein Apache-bug?