Hinzufügen von HTTP-Header in einem Frühlings-Interceptor postHandle Verfahren

StackOverflow https://stackoverflow.com/questions/246762

  •  05-07-2019
  •  | 
  •  

Frage

Ich habe ein Feder Interceptor, die versucht, einen HTTP-Header in der postHandle () -Methode hinzuzufügen.

public void postHandle(HttpServletRequest req, HttpServletResponse resp, 
             Object obj1, ModelAndView mv)
        throws Exception {
        response.setHeader("SomeHeaderSet", "set");
        response.addHeader("SomeHeaderAdd", "added");
    }
}

Allerdings ist weder Header mit entweder setHeader () oder addHeader () hinzugefügt.

Ist das noch gültig in dem Abfangjäger zu tun? Ich dachte, es wäre, aber es ist nicht workin.

Viele Grüße, Dustin

War es hilfreich?

Lösung 2

Nun, ich es herausgefunden ... Kinda ...

Es stellte sich heraus, das gleiche Problem mit Jetty und Tomcat (dachte, es war vielleicht ein Container Ausgabe). So ...

Gedebuggte, um sicherzustellen, dass das Antwortobjekt den richtigen Header enthaltenen Wert bis Frühjahr zurück in den Behälter zurückgeführt. Ergebnis:. Die HttpServletResponse Instanz hatte immer noch den richtigen Header-Wert

fand ich in meinem Code ich Aufruf response.setContentLength() bevor ich etwas mit den Header zu tun. Wenn ich es auf Kommentar, alles funktioniert.

Also, das verbleibende Geheimnis ist, warum ruft response.setContentLength() Sperre Dinge nach unten und nicht zulassen, dass alle Header modifiziert werden? Ich glaube nicht, der Inhalt Körper etwas mit den anderen Header zu tun hatte.

Andere Tipps

Haben Sie versucht, die Überschriften in dem preHandle Verfahren einstellen? Wenn das nicht funktioniert, versucht, einen Filter für die Container zu schreiben und legen Sie die Header dort statt.

Ich hatte ein ähnliches Problem, es funktioniert, wenn ich die folgenden in der web.xml haben (habe nicht herausgefunden, warum)

<filter>
  <filter-name>etagFilter</filter-name>
    <filter-class>org.springframework.web.filter.ShallowEtagHeaderFilter</filter-class>
</filter>

<filter-mapping>
  <filter-name>etagFilter</filter-name>
  <servlet-name>myServlet</servlet-name>
</filter-mapping>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top