Boa tarde, estou tentnado fazer um Controller para redirecionamento do usuário para páginas externas, sem colocar o link direto no …
Fiz algo mais ou menos assim usando o Spring:
@Controller
@RequestMapping("/redirect")
public class RedirectController
{
@RequestMapping("/{url}")
public void redirecionar(@PathVariable("url") String url,HttpServletResponse response)
{
try
{
response.sendRedirect(url);
}
catch (IOException e)
{
throw new RuntimeException(e);
}
}
}
Porém, ao passar um site, por exemplo:
/redirect/www.uol.com.br
Ele causa um erro no navegador, dizendo o seguinte:
[color=red]O Firefox detectou que o pedido para este endereço não será concluído devido à forma que o servidor o está redirecionando.[/color]
Alguém sabe como resolver isso ? se devo mudar o modo de redirecionar ?
Obrigado.
Já tentei com o http, e não da certo, ele vai pra 404
Qual o valor que chega no url?
response.sendRedirect(url);
Se você imprimir no console, tá escrito oq?
Entendi o que esta acontecendo, quando eu envio a @PathVariable, se possuir pontos ou barras, são removidas, entao, se eu mandar:
“uol.com.br”
só chega a String: “uol”
e o “.com.br” some…
Será que não tem jeito de passar este valor por @PathVariable ?
Senão vou ter que fazer como get msm:
redirect?url=http://www.uol.com.br
Ou então você pode alterar na unha antes do redirect! :roll: :roll: :roll:
Ai começa a entrar as gambis…
resolvi fazer o get msm:
http://site.com.br/redirect/externo?url=Http://www.google.com.br
Agora to pensando num modo de fazer um controller parecido com esse, mas para download de arquivos, porque não quero deixar um link ligado direto ao arquivo, tipo:
http://site.com.br/arquivos/catalogo_de_produtos.xml
quero algo assim:
http://site.com.br/download?arquivo=catalogo_produtos
Criei um simples controlador que faz o redirect:
@Controller
@RequestMapping("/redirect")
public class RedirectController
{
@RequestMapping("/externo")
public void redirecionar(String url,HttpServletResponse response)
{
try
{
response.sendRedirect(url);
}
catch(IOException e)
{
throw new RuntimeException(e);
}
}
}