2012-04-10 9 views
0

Ich benutze RichFaces und ich habe Probleme mit der Flash-Komponente fileUpload + IE + SSL. Laut meinen Recherchen muss ich die HTTP-Header "Pragma" und "Cache-Control" ändern.Wie ändert man HTTP-Header für einen bestimmten Inhaltstyp?

Wie kann ich diese Header nur für Flash-Inhalte ändern? Ich habe versucht, einen Servlet-Filter zu verwenden. Dies ist die doFilter() Methode:

chain.doFilter(request, response); 
HttpServletResponse resp = (HttpServletResponse) response; 
if (resp.getContentType() != null && resp.getContentType().contains("flash")) { // application/x-shockwave-flash 
resp.setHeader("Pragma", ""); 
} 

Der Filter ausgeführt wird, wird der Header geändert wird, dann aber mit Firebug ich überprüfen, ist der Header zurück zu „no-cache“. Dies ist der letzte Filter, den ich in meinem web.xml habe, aber es passiert, als würde ein anderer Filter den Header zurücksetzen.

Ich benutze auch JBoss 5. Wie kann ich das lösen? Vielen Dank.

Antwort

1

Versuchen Sie, die Anweisungen zum Festlegen der Kopfzeile vor der doFilter() auszuführen. Auf diese Art und Weise:

Da Sie ein Header-Feld nicht festlegen können, sobald der Server beginnt, Daten an den Client zu senden.

Natürlich müssen Sie auf diese Weise eine andere Methode finden, um die contentType der angeforderten Ressourcen zu überprüfen. Vielleicht können Sie Ihre Prüfung anhand der HttpServletRequest.getRequestURI() und der Dateinamenserweiterung in diesem Wert tun.

+0

Ich dachte, was ich getan habe, würde den Header ändern ** nach ** der Server hat die Anfrage bearbeitet, aber ** vor ** Senden der Antwort. Ich habe zuerst versucht, diese Überschrift für alle Antworten zu setzen, aber nur einige von ihnen (ohne den Flash) behielten die Änderung bei. – Carcamano

+0

Nein, der Code in 'doFilter' schreibt bereits auf den Client. Manchmal, wenn Sie einen großen Puffer für die Antwort kann es funktionieren, aber wenn Sie diese Grenze überschreiten, beginnt es Daten zu senden. Du kannst also nicht sicher sein. – dash1e

+1

Ihr Vorschlag hat funktioniert. Aber ich habe die if-Bedingung aus dem Filter entfernt und '' * .swf '' zum Deployment-Deskriptor hinzugefügt. Vielen Dank. – Carcamano

Verwandte Themen