Fala ai meus amigos, existe alguma maneira de configurar cors no vraptor 4 ? eu andei vendo uns tutoriais e cheguei a criar um corsInterceptor e um corscontroller e tenho um autenticacaoInterceptor tambem, entao coloquei o corsinterceptor para executar primeiro só que quando uso nao consigo que o sistema redirecione mais para o login e acaba nada carregando a pagina só pisca e nada acontece e não tenho nenhum log de error ou warn no console alguem ai ta por dentro?
Bom galera consegui resolver … para quem estiver com problemas vou passar o codigo do CORSInterceptor e do CORSController
CORSInterceptor
`
import javax.inject.Inject;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import br.com.caelum.vraptor.BeforeCall;
import br.com.caelum.vraptor.InterceptionException;
import br.com.caelum.vraptor.Intercepts;
@Intercepts(before = AutenticacaoInterceptor.class)
public class CORSInterceptor {
private HttpServletRequest request;
private HttpServletResponse response;
/**
* @deprecated
*/
public CORSInterceptor() {}
@Inject
public CORSInterceptor( HttpServletRequest request,
HttpServletResponse response ) {
this.request = request;
this.response = response;
}
@BeforeCall
public void intercept() throws InterceptionException {
String origin = request.getHeader("origin") != null ? request.getHeader("origin") : "*";
response.addHeader("Access-Control-Allow-Origin", origin);
response.addHeader("Access-Control-Allow-Credentials", "true");
response.addHeader("Access-Control-Expose-Headers", "Content-Type, Location");
}
}`
CORSController
`import java.util.Set;
import javax.enterprise.event.Observes;
import javax.inject.Inject;
import br.com.caelum.vraptor.Controller;
import br.com.caelum.vraptor.Options;
import br.com.caelum.vraptor.Path;
import br.com.caelum.vraptor.Result;
import br.com.caelum.vraptor.controller.HttpMethod;
import br.com.caelum.vraptor.events.VRaptorRequestStarted;
import br.com.caelum.vraptor.http.route.Router;
import br.com.caelum.vraptor.view.Results;
@Controller
public class CorsController {
private Result result;
private Router router;
/**
* @deprecated
*/
public CorsController() { }
@Inject
public CorsController(Result result, Router router) {
this.result = result;
this.router = router;
}
@Options
@Path(value = "/*")
public void options(@Observes VRaptorRequestStarted requestInfo) {
Set<HttpMethod> allowed = router.allowedMethodsFor(requestInfo.getRequest().getRequestedUri());
String allowMethods = allowed.toString().replaceAll("\\[|\\]", "");
result.use(Results.status()).header("Allow", allowMethods);
result.use(Results.status()).header("Access-Control-Allow-Methods", allowMethods);
result.use(Results.status()).header("Access-Control-Allow-Headers", "Content-Type, X-Requested-With, accept, Authorization, origin");
}
}`
Desse jeito o meu funcionou de boa