была заблокирована политикой CORS: Ответ на предпечатный запрос не прошел проверку контроля доступа: не имеет HTTP-статуса ok - PullRequest
0 голосов
/ 30 сентября 2019

Мой угловой код

intercept(req: HttpRequest<any>, next: HttpHandler) {
        const nextReq = req.clone({
            headers: req.headers.set('Cache-Control', 'no-cache')
                .set('Pragma', 'no-cache')
                .set('Expires', 'Sat, 01 Jan 2000 00:00:00 GMT')
                .set('If-Modified-Since', '0')
                .set('Authorization', 'secret')
                .set('client-id', 'test')


        });

        return next.handle(nextReq).timeout(220000).catch(this.handleError);
    }

Мой сервисный код Java:

@Override
    public boolean preHandle(
            HttpServletRequest request,
            HttpServletResponse response,
            Object handler)
    {
        response.setHeader("Access-Control-Allow-Origin", "*");
        response.setHeader("Access-Control-Allow-Methods", "POST, GET, PUT, OPTIONS, DELETE");
        response.setHeader("Access-Control-Allow-Headers", "Content-Type, Access-Control-Allow-Headers, Authorization, Access-Control-Allow-Origin,cache-control,client-id,expires,if-modified-since, pragma");


        String clientId = request.getHeader("client-id");

}

После запуска приложения я получаю эту ошибку, и идентификатор клиента становится пустым - заблокированПолитика CORS: Ответ на предварительный запрос не проходит проверку контроля доступа: Нет статуса HTTP ok

Я добавил все необходимые заголовки.

Пожалуйста, помогите

нижемой сетевой вызов

введите описание изображения здесь

1 Ответ

0 голосов
/ 30 сентября 2019

Возможно, проблема возникла со стороны сервера (вашего бэкэнда), но вы можете попробовать это для ясного решения. Не могли бы вы попробовать ввести боб, который может предоставить вам конфигурацию кросса:

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.filter.GenericFilterBean;

public class CORSFilter extends GenericFilterBean implements Filter {

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chaine)
            throws IOException, ServletException {
        HttpServletResponse httpResponse = (HttpServletResponse)response;
        httpResponse.setHeader("Access-Control-Allow-Origin", "*");
        httpResponse.setHeader("Access-Control-Allow-Methods", "*");
        httpResponse.setHeader("Access-Control-Allow-Headers", "*");
        httpResponse.setHeader("Access-Control-Allow-Credentials", "false");
        httpResponse.setHeader("Access-Control-Max-Age", "3600");
        System.out.println("****************** CORS Configuration Completed *******************");
        chaine.doFilter(request, response);
    }

}

В основном классе попробуйте ввести боб следующим образом:

@Bean
    public FilterRegistrationBean crosFilterRegistration(){
        FilterRegistrationBean registrationBean = new FilterRegistrationBean(new CORSFilter());
        registrationBean.setName("CORS Filter");
        registrationBean.addUrlPatterns("/*");
        registrationBean.setOrder(1);
        return registrationBean;
    }

Надеюсь, это будетбыть полезным для вас или кого-либо еще:)

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