Корс ошибка «Нет Access-Control-Allow-Origin» работает на локальном хосте, но не на сервере - PullRequest
0 голосов
/ 30 мая 2018

в моем весеннем загрузочном приложении у меня есть собственный фильтр, который устанавливает заголовки, связанные с cors.Это прекрасно работает на локальном хосте, мои запросы проходят через мой пользовательский фильтр и заголовки заполнены.Но когда я развертываю свое приложение на сервере, я получаю сообщение об ошибке, и кажется, что предварительный запрос не вызывает мой пользовательский фильтр.

Это мой фильтр

@Component
public class CustomAllowAllCorsFilter implements Filter {
final private static Logger logger = LoggerFactory.getLogger(CustomAllowAllCorsFilter.class);

private boolean allowAllOrigins;

public CustomAllowAllCorsFilter() {
    logger.info("init filter corsssss");
}

@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain filterChain)
        throws IOException, ServletException {

    logger.info("doFilter - allowAllOrigins: " + allowAllOrigins);

    HttpServletRequest request = (HttpServletRequest) req;
    HttpServletResponse response = (HttpServletResponse) res;

    if (allowAllOrigins) {
        response.setHeader("Access-Control-Allow-Origin", request.getHeader("Origin"));
        response.setHeader("Access-Control-Allow-Credentials", "true");
        response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
        response.setHeader("Access-Control-Max-Age", "3600");
        response.setHeader("Access-Control-Allow-Headers",
                "Authorization, Content-Type, Accept, X-Requested-With, remember-me, OCTO-Security-Type, OCTO-Security-Name, OCTO-Security-Token, OCTO-Security-Business");
    }

    if (request.getMethod().equals("OPTIONS"))
        response.setStatus(HttpServletResponse.SC_OK);
    else
        filterChain.doFilter(request, response);
}

@Override
public void init(FilterConfig filterConfig) {
}

@Override
public void destroy() {
}

@Value("${cors.allow-all-origins}")
public void setAllowAllOrigins(boolean allowAllOrigins) {
    this.allowAllOrigins = allowAllOrigins;
}
}

И этоэто ошибка:

Failed to load http://xyz:8080/app/invoices: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://xii.com' is therefore not allowed access.

У кого-нибудь есть идея?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...