Hinzufügen von Antwortheadern basierend auf dem Inhaltstyp; Abrufen von Inhaltstyp, bevor die Antwort festgeschrieben wird

8

Ich möchte den Header Expires für alle image/* und text/css festlegen. Ich mache das in Filter . Jedoch:

  • vor Aufruf von chain.doFilter(..) der Inhaltstyp ist noch nicht "realisiert"
  • Nach dem Aufruf von chain.doFilter(..) wird der Inhaltstyp festgelegt, aber auch die Inhaltslänge, die das Hinzufügen neuer Header (zumindest in der Tomcat-Implementierung) verbietet

Ich kann die Erweiterungen der angeforderten Ressource verwenden, aber da einige der CSS-Dateien von Richfaces generiert werden, indem sie aus JAR-Dateien stammen, lautet der Name der Datei nicht x.css , sondern /xx/yy/zz.xcss/DATB/... . .

Also gibt es eine Möglichkeit, den Content-Typ zu erhalten, bevor die Antwort festgeschrieben wird.

    
Bozho 01.04.2010, 20:10
quelle

2 Antworten

13

Ja, implementieren Sie HttpServletResponseWrapper und überschreiben Sie%. co_de%.

%Vor%

und benutze es wie folgt:

%Vor%     
BalusC 01.04.2010, 20:48
quelle
2

Sie sollten HttpServletResponseWrapper von der Unterklasse ableiten und überschreiben Sie addHeader und setHeader , um den neu gewünschten Header hinzuzufügen, wenn" Content-Type "als Header-Name übergeben wird. Vergessen Sie nicht, Super in diesen überschriebenen Methoden zu nennen. Wickeln Sie die Antwort, die im doFilter-Methodenargument gesendet wird, mit diesem neuen Wrapper und übergeben Sie den Wrapper an den Aufruf von doFilter.

    
laz 01.04.2010 20:37
quelle

Tags und Links