Tomcat e vraptor não permite download de pdf usando https

21 respostas
lelodois

Olá Senhores, bom dia

Estou usando vraptor rodando no tomcat, minha app faz download através do FileDownload do vraptor, conforme abaixo:

return new FileDownload(file, "application/pdf", "relatorio_", true);

Usando o https no ie que devo homologar aparece um erro e não deixa fazer o download, mas no http funciona normalmente.

Fiz um redirect do http para o https no meu tomcat, conforme abaixo:

<Connector  
               port="80" 
               protocol="HTTP/1.1" 
               connectionTimeout="20000" 
               redirectPort="443" 
	       minSpareThreads="100" 
	       maxSpareThreads="100"/>
    
<Connector 
               port="443" 
               protocol="HTTP/1.1" 
               SSLEnabled="true"
               maxThreads="150" 
               scheme="https" 
               secure="true"
               clientAuth="false" 
               sslProtocol="TLS"
	       keystoreFile="meu_arquivo.pfx" 
	       keystorePass="senha"
	       keystoreType="meu_ky_store_type"/>

Erro > "Não é possível baixar meu relatorio de meu host.com.br"

Alguém sabe o que pode ser e como posso resolver isso?

Obrigado.

21 Respostas

pedruhenrik

lelodois, olá td bem?

vc conseguiu sumir com a tela de “Esta conexão não é confiável” utilizando 1 certificadossl??

obrigado,

att,

lelodois

pedruhenrik:
lelodois, olá td bem?

vc conseguiu sumir com a tela de “Esta conexão não é confiável” utilizando 1 certificadossl??

obrigado,

att,

Sim, com cadeado e tudo.
O redirect resolveu isso para mim :slight_smile:

Alguém tem idéia de como posso resolver isso?

Lucas_Cavalcanti

deve ser alguma trava do IE pra não deixar abrir pdfs de sites não confiáveis…

tenta adicionar o certificado do seu site no IE (ou pedir pra ele ignorar isso)

lelodois

Lucas Cavalcanti:
deve ser alguma trava do IE pra não deixar abrir pdfs de sites não confiáveis…

tenta adicionar o certificado do seu site no IE (ou pedir pra ele ignorar isso)

Mas é uma app que será disponibilizada na internet, assim teria que configurar o ie dos meus clientes.
Vc sabe se teria como fazer isso via app?

Obrigado.

Lucas_Cavalcanti

se o certificado for válido e confiável, vc não precisa configurar nos seus clientes.

tenta ver se o problema de não dar pra fazer o download é por causa do certificado mesmo…

nos outros browsers funciona?

lelodois

Lucas Cavalcanti:
se o certificado for válido e confiável, vc não precisa configurar nos seus clientes.

tenta ver se o problema de não dar pra fazer o download é por causa do certificado mesmo…

nos outros browsers funciona?

Sim, no chrome e no firefox funcionam normalmente.
O certificado está como válido e inclusive adicionei ele na lista de “sites confiáveis” do ie, mas mesmo assim não funciona.
Acredito que seja por causa do https mesmo, pois o download funciona normalmente se eu usar o http sem o redirect.

Vlw

Lucas_Cavalcanti

que redirect vc está fazendo? http => https?

lelodois

Lucas Cavalcanti:
que redirect vc está fazendo? http => https?

Sim… tudo que cai no http vai para o https.

Lucas_Cavalcanti

inclusive o download? ou seja, o link pro download está em http ou https?

lelodois

Tudo vai para o https, inclusive o download.
O redirect eu fiz direto no server do tomcat.

Http:

<Connector port="80" protocol="HTTP/1.1" 
               connectionTimeout="20000" 
               redirectPort="443" 
			   minSpareThreads="100" 
			   maxSpareThreads="100"/>

Https:

<Connector port="443" protocol="HTTP/1.1" SSLEnabled="true"
               maxThreads="150" scheme="https" secure="true"
               clientAuth="false" sslProtocol="TLS"
			   keystoreFile="arquivo.pfx" 
			   keystorePass="senha"
			   keystoreType="pktype"/>

Vc faria diferente?

G

Você está “setando” alguma header antes do download, por exemplo, headers de no-cache? O IE não gosta disso quando você vai disponibilizar um download.

lelodois

Sim…

Tenho um interceptor que seta os seguintes atributos…

response.setHeader("Expires", "Wed, 31 Dec 1969 21:00:00 GMT");
		 response.setHeader("Cache-Control", "no-store, no-cache, must-revalidate");
		 response.setHeader("Pragma", "no-cache");

Posso testar, mas tenho que tirar o cache dos meus jsps…
E o engraçado é que em http o ie faz o download normalmente, mas em https não…

lelodois

Sim…

Tenho um interceptor que seta os seguintes atributos…

response.setHeader("Expires", "Wed, 31 Dec 1969 21:00:00 GMT");
		 response.setHeader("Cache-Control", "no-store, no-cache, must-revalidate");
		 response.setHeader("Pragma", "no-cache");

Posso testar, mas tenho que tirar o cache dos meus jsps…
E o engraçado é que em http o ie faz o download normalmente, mas em https não…

Showwwww garcia, resolvido!

Era cache mesmo.

Meu interceptor ficou assim: (Quando o retorno do vraptor é fileDownload eu não limpo o cache)

if (this.limparCache(method) == true) {
			response.setHeader("Expires", "Wed, 31 Dec 1969 21:00:00 GMT");
			response.setHeader("Cache-Control", "no-store, no-cache, must-revalidate");
			response.setHeader("Pragma", "no-cache");
		}

        private boolean limparCache(ResourceMethod method) {
		boolean valor = true;
		if (method != null && method.getMethod() != null && method.getMethod().getReturnType() != null)
			valor = method.getMethod().getReturnType().toString().contains("FileDownload") == true;
		return !valor;
	}

Obrigadãooo pessoal, vlw.

Abraços.

G

Muito boa a solução.

O Lucas pode me corrigir se eu estiver errado, mas você não precisa de todos esses ifs, ja que method e method.getMethod nunca são nulos, e o mesmo vale para o getReturnType(). Eu faria algo assim apenas:

Lucas_Cavalcanti

o isAssignableFrom é ao contrário :wink:

Download.class.isAssignableFrom(method.getMethod().getReturnType());
lelodois

Valeu pessoal.

Obrigadão, valeu pelas dicas!

Mais que resolvido!
abraços, tenham um bom dia.

juniorsatanas

lelodois ! [resolvido] no título

Abraço !
jr

lelodois

ops…
pensei que já tinha colocado rs

Edit…

na verdade coloco o [Resolvido] mas não aparece…
estranho…
vlw

juniorsatanas

diminui o tamanho do titulo !

lelodois

Feito

Não está mudando o título principal, somente o que aparece no jforum…

Lagaffe

Voce tem de alterar no título da primeira mensagem

Criado 23 de fevereiro de 2011
Ultima resposta 11 de mar. de 2011
Respostas 21
Participantes 6