Pergunta

Eu tenho um Interceptor Primavera que tenta adicionar um cabeçalho HTTP no método postHandle ().

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

No entanto, nem o cabeçalho é adicionado com qualquer setHeader () ou addHeader ().

Isto é ainda válida para fazer no interceptor? Eu imaginei que seria, mas ele não está trabalhando.

Saudações, Dustin

Foi útil?

Solução 2

Bem, eu percebi isso ... meio ...

Acontece que, mesmo problema com Jetty e Tomcat (figurado talvez fosse uma questão container). Então ...

Debugged para assegurar que o objeto de resposta continha o valor correto de cabeçalho-se até à Primavera devolvido para o recipiente. Resultado:. A instância HttpServletResponse ainda tinha o valor de cabeçalho correta

Eu encontrei no meu código eu estava invocando response.setContentLength() antes de eu fazer qualquer coisa com os cabeçalhos. Se eu comentá-lo, tudo funciona bem.

Assim, o mistério restante é, por que chamar as coisas bloqueio response.setContentLength() para baixo e não permitir que quaisquer cabeçalhos de ser modificado? Eu não acho que o corpo de conteúdo tinha nada a ver com os outros cabeçalhos.

Outras dicas

Você já tentou definir os cabeçalhos no método preHandle? Se isso não funcionar, tente escrever um filtro para o recipiente e definir os cabeçalhos em lá em vez disso.

Eu tive um problema semelhante, ele funciona quando eu tenho o seguinte no web.xml (ainda não descobri por quê)

<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>
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top