sexta-feira, 14 de novembro de 2014

Habilitar CORS para acessar serviços REST

Uma vez que implementamos e disponibilizamos o serviço Restfull, precisamos definir qual domínio pode ter acesso a este serviço. Os navegadores possuem uma segurança que não permitem arquivos javascript acessarem serviços externos via http, os chamados CORS (Cross-Origin Resource Sharing). 
Se tentarmos acessar um serviço sem habilitá-lo, nos deparamos com esta mensagem:



Precisamos habilitar o CORS em nosso servidor, resumindo precisamos seguir 2 passos:
  1. Escrever um header para retorno da resposta http em um filtro.
  2. Mapear na aplicação (web.xml) este filtro.
(obs: utilizando java servlet)

1) O filtro com habilitando o CORS.
public class SimpleCORSFilter implements Filter{
 @Override
 public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
  HttpServletResponse response = (HttpServletResponse) res;
  response.setHeader("Access-Control-Allow-Origin", "*");
        response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
        response.setHeader("Access-Control-Max-Age", "3600");
        response.setHeader("Access-Control-Allow-Headers", "x-requested-with");
        chain.doFilter(req, res);
 }

 @Override
 public void destroy() {
 }

 @Override
 public void init(FilterConfig arg0) throws ServletException {
 }
}

Explicando...
response.setHeader("Access-Control-Allow-Origin", "*");
Neste trecho definimos permissão para qualquer (*) domínio acessar nosso serviço!

2) Mapendo filtro na aplicação

 simpleCORSFilter
  br.com.adriano.filter.SimpleCORSFilter 



     simpleCORSFilter
     /*

Com apenas isso, seu serviço está disponível para ser utilizado!

Nenhum comentário:

Postar um comentário