была заблокирована политикой CORS: Ответ на предполётный запрос не проходит проверку контроля доступа - PullRequest
0 голосов
/ 17 мая 2019

Когда я добавляю org.springframework.web.filter.DelegatingFilterProxy в web.xml, я не могу получить доступ к Spring API из Angular UI, но когда я удаляю, я могу получить доступ (но я могу получить доступ к API и получитьответ с использованием базовой аутентификации в почтальоне) Я добавил пользовательский фильтр.Ниже приведены настройки

Web.xml

<filter>
        <filter-name>CorsFilter</filter-name>
        <filter-class>com.config.CustomFilter</filter-class>
    </filter>
    <filter>
        <filter-name>springSecurityFilterChain</filter-name>
        <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>CorsFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>springSecurityFilterChain</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

CustomFilter Class

public class CustomFilter extends OncePerRequestFilter {

    @Override
    protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain chain)
            throws ServletException, IOException {
        response.setHeader("Access-Control-Allow-Origin", "*");
        response.setHeader("Access-Control-Allow-Methods", "POST, PUT, GET, OPTIONS, DELETE");
        response.setHeader("Access-Control-Max-Age", "3600");
        response.setHeader("Access-Control-Allow-Headers",
                "authorization, content-type, xsrf-token, Cache-Control, remember-me, WWW-Authenticate");
        response.addHeader("Access-Control-Expose-Headers", "xsrf-token");
        chain.doFilter(request, response);

    }

    public void destroy() {}


}

Из углового запроса вызова API

getMenu(){
    const endpoint = 'http://localhost:8080/getAllProducts';
    const headers = new HttpHeaders({Authorization: 'Basic ' + btoa('******@gmail.com:*****')});
    return this.http.get<any>(endpoint,{headers});
  }

ApplicationContextXML для весенней безопасности

<!-- Spring - Security Purpose -->
    <security:http auto-config="true" use-expressions="true">
        <security:intercept-url pattern="/index/**"
            access="permitAll" />
        <security:intercept-url pattern="/index1/**"
            access="permitAll" />
        <security:intercept-url pattern="/cart/**"
            access="permitAll" />
        <security:intercept-url pattern="/get*/**"
            access="hasAnyRole('ROLE_ADMIN','ROLE_USER')" />
        <security:intercept-url pattern="/admin*/**"
            access="hasRole('ROLE_ADMIN')" />
        <security:form-login login-page="/login"
            authentication-failure-url="/login?error" default-target-url="/index1"
            username-parameter="j_username"
            password-parameter="j_password" />
        <security:logout logout-success-url="/login?logout" />

    </security:http>

    <security:authentication-manager>
        <security:authentication-provider>
            <!-- <security:user-service> -->
            <!-- <security:user name="ismail@gmail.com" password="12345" -->
            <!-- authorities="ROLE_USER" /> -->
            <!-- <security:user name="ajmal@gmail.com" password="54321" -->
            <!-- authorities="ROLE_ADMIN" /> -->
            <!-- </security:user-service> -->

            <security:jdbc-user-service
                data-source-ref="dataSource"
                authorities-by-username-query="SELECT 
                emailId,authorities FROM authorities WHERE emailId =?"
                users-by-username-query="SELECT 
                emailId, password, enabled FROM users WHERE emailId=? " />
        </security:authentication-provider>

    </security:authentication-manager>

Доступ к XMLHttpRequest по адресу http://localhost:8080/getAllProducts' от источника 'http://localhost:4200' заблокирован политикой CORS: Ответ на запрос предполетной проверки не пропускает доступконтрольная проверка: перенаправление не разрешено для предварительного запроса.

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