Olá,para a minha api utilizei oauth2 no lugar de jjwt e também utilizei um filtro para o cors devido a uma imcompatibilidade ente o Spring -security e o auth2, quando coloco em produção eu recebo um erro de cors:
insira seu código aqui
from origin 'http://localhost:8081' has been blocked by CORS policy: The value of the 'Access-Control-Allow-Origin' header in the response must not be the wildcard '*' when the request's credentials mode is 'include'. The credentials mode of requests initiated by the XMLHttpRequest is controlled by the withCredentials attribute.
Meu filtro:
@Component
@Order(Ordered.HIGHEST_PRECEDENCE)
public class CORSFilter implements Filter{
@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
HttpServletResponse response = (HttpServletResponse) res;
HttpServletRequest request = (HttpServletRequest) req;
response.setHeader("Access-Control-Allow-Origin", "*");
response.setHeader("Access-Control-Allow-Credentials", "true");
response.setHeader("Access-Control-Allow-Methods", "POST, GET, PUT, OPTIONS, DELETE, PATCH");
response.setHeader("Access-Control-Max-Age", "3600");
response.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept,Authorization");
response.setHeader("Access-Control-Expose-Headers", "Location");
if("OPTIONS".equalsIgnoreCase(request.getMethod())) {
response.setStatus(HttpServletResponse.SC_OK);
} else {
chain.doFilter(req, res);
}
}
@Override
public void init(FilterConfig filterConfig) {}
@Override
public void destroy() {}
}
Lendo vi que não é permitido utilizar response.setHeader("Access-Control-Allow-Origin", "*"); e response.setHeader("Access-Control-Allow-Credentials", "true"); juntos, mas é muito ruim eu ter que definir uma lista de origens que podem acessar, eu gostaria mesmo que fosse qualquer uma origem, mas por causa da autenticação eu tenho o header Access-Control-Allow-Credentials", "true".
Minha pergunta é existe alguma forma de liberar qualquer origem mesmo usando o allow credentials como true? qual a real necessidade de termos esse header allow credentials, quais os impactos de não ter ou ter ele setado para false?