2014-01-21 15 views
6

Ich arbeite mit einem Apache-Server, und ich möchte Header bedingt hinzufügen.Apache-Header bedingt setzen

Wenn der URI eine bestimmte Regex entspricht, möchte ich die Kopfzeile hinzufügen. Was ist ein guter Weg, dies zu tun?

Was ich bisher versucht habe:

  1. Ich habe von der Request-Handler genannt Code, apr_table_add(rq->headers_out, "Access-Control-Allow-Origin", "*") verwenden. Aber es scheint, als ob Apache den Header vor dem Senden der Antwort streift, wenn auch der Header Content-Type: application/x-javascript gesetzt ist. Ist das der falsche Weg? Warum sollte Apache den Header entfernen?

  2. Ich habe mod_headers vorgeschlagen gehört. Können mod_header Header basierend auf Regex-Übereinstimmungen mit dem Anfrage-URI platzieren?

+0

abgestimmt ist, wie haben Sie das Problem gelöst, hast du gesagt, dass Sie die Hilfe erhalten, von einige Kollegen? Könnten Sie bitte die Antwort oder die Antwort von @akond posten? – Robert

+0

Die Antwort von @akond hat funktioniert. – dinosaur

Antwort

11
SetEnvIf Request_URI somepartofurl SIGN 
Header always add "Access-Control-Allow-Origin" "*" env=SIGN 

aber dies funktioniert nur, wenn in der Konfiguration befindet. Platzieren in .htaccess wird nicht helfen.

+0

Können Sie erklären, was dieser Code macht (Syntax, wie es funktioniert)? Wenn du sagst "in der Konfiguration gefunden" meinst du in httpd.conf? Ich glaube nicht, dass mein Modul eins hat. Wie würde ich es einrichten? – dinosaur

+0

Ich habe es mit Hilfe von Kollegen herausgefunden. Vielen Dank! – dinosaur

+0

Sowohl SetEnvIf als auch Header-Direktiven sind nicht darauf beschränkt, sich nur in der Konfigurationsdatei zu befinden, sie funktionieren perfekt im Verzeichniskontext, auch in .htaccess-Dateien. Im Gegensatz zu dem, was in der angenommenen Antwort angegeben ist. – biera

1

Dies auch (mod_rewrite erforderlich) funktionieren sollte:

RewriteRule ^/en/foo.*$ - [ENV=SET_ACAO:true] 
Header set "Access-Control-Allow-Origin" "*" env=SET_ACAO 

wo ^/en/foo.*$ ein regulärer Ausdruck, die gegen URL