2016-11-15 15 views
0

Я пытаюсь ударить по остальной услуге через службу Angular $ http, я получаю ошибка какПри попадании в службу восстановления Получение ошибки - ответ на запрос предварительной проверки не проходит проверку контроля доступа: нет заголовка «Access-Control-Allow-Origin»

XMLHttpRequest cannot load 
http://localhost:3000/SpringSecurity/utn/accounts/all. Response to 
preflight request doesn't pass access control check: No 
'Access-Control-Allow-Origin' header is present on the requested 
resource. Origin 'null' is therefore not allowed access 

запрос в угловой:

$http({ 
       method: 'GET', 
       url: 'http://localhost:3000/SpringSecurity/utn/accounts/all', 
       headers: { 
        'Content-type': 'application/json', 
        'Accept' : 'application/json', 
        "Access-Control-Allow-Origin" : "*", 
        "Access-Control-Allow-Methods" : "GET", 
        "Access-Control-Allow-Headers": "Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With" 


       } 

      }).then(function successCallback(response) { 

       console.log("Success"); 
       console.log(response); 

       }, function errorCallback(response) { 

       console.log("Error"); 
       console.log(response); 

       }); 

HTML:

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.8/angular.min.js"></script> 

Spring Контроллер:

@RequestMapping(value = "/utn/accounts/all", method = RequestMethod.GET) 
public ModelAndView utnAccountsAll(HttpServletRequest request,HttpServletResponse response) { 

    System.out.println("Inside UTN Accounts method"); 
    ModelAndView model = new ModelAndView(); 
    response.setHeader("Access-Control-Allow-Origin", "*"); 
    response.setHeader("Access-Control-Allow-Methods", "GET"); 
    response.setHeader("Access-Control-Max-Age", "3600"); 
    response.setHeader("Access-Control-Allow-Headers", "Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With"); 


    model.addObject("message","Successss"); 
    model.setViewName("success"); 
    return model; 

} 
+0

Включение CORS на стороне сервера. –

+1

Как вы настроили websecurtiyconfigureradapter? – kuhajeyan

+0

Включить CORS на стороне сервера, как сказал @Manish. А также разрешить предполетный вызов: response.setHeader («Access-Control-Allow-Methods», «GET, OPTIONS»); –

ответ

0

Необходимо включить фильтр CORS на стороне сервера. Добавьте приведенный ниже код и аннотировать его с @Configuration

@Configuration 
public class CorsFilter implements Filter { 

    @Override 
    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { 
     final HttpServletResponse response = (HttpServletResponse) res; 
     response.setHeader("Access-Control-Allow-Origin", "*"); 
     response.setHeader("Access-Control-Allow-Methods", "POST, PUT, GET, OPTIONS, DELETE"); 
     response.setHeader("Access-Control-Allow-Headers", "Authorization, Content-Type"); 
     response.setHeader("Access-Control-Max-Age", "3600"); 

      chain.doFilter(req, res); 

    } 
    @Override 
    public void destroy() { 
    }  
    @Override 
    public void init(FilterConfig config) throws ServletException { 
    }