2016-03-08 2 views
4

Я использую Spring бутс в стороне сервера и Angularjs в стороне клиента, я настроен Spring загрузка приложения CORS используя фильтр и его работал GET, POST метод, но, когда я пытался отправить PUT запроса с использованием $ HTTP модуля, я получил это в моем браузере консоли:запроса метода «OPTIONS» не поддерживается - Spring загрузка приложения

Примечание: URL = http://localhost:8080/localbusinessusers/[object%20Object]

ВАРИАНТЫ URL (анонимная функция) @ angular.js: 11442sendReq @ angular.js: 11235serverRequest @ angular.js: 10945processQueue @ angular.js: 15552 (анонимная функция) @ angular.js: 15568Scope. $ Eval @ angular.js: 16820Scope. $ Digest @ angular.js: 16636Scope. $ Apply @ angular.js: 16928done @ angular.js: 11266completeRequest @ угловой. js: 11464requestLoaded @ angular.js: 11405 app.html: 1 XMLHttpRequest не может загрузить url. Ответ для предполета имеет недопустимый код состояния HTTP 405 angular.js: 11442 XHR не удалось загрузить: PUT "url".

И я получил это на Spring загрузки консоли:

2016-03-08 23: 19: 51,212 WARN 27044 --- [XNIO-2 задача-2] osweb. сервлет.PageNotFound: метод запроса 'OPTIONS' не поддерживается

Мои CORSФильтр:

package com.datcom.fouras; 

import java.io.IOException; 

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

import org.springframework.stereotype.Component; 

@Component 
public class CorsFilter implements Filter { 

    @Override 
    public void init(FilterConfig filterConfig) throws ServletException { 
     // TODO Auto-generated method stub 

    } 

    @Override 
    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) 
      throws IOException, ServletException { 
     HttpServletResponse response = (HttpServletResponse) res; 
     response.setHeader("Access-Control-Allow-Origin", "http://localhost"); 
     response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE"); 
     response.setHeader("Access-Control-Max-Age", "3600"); 
     response.setHeader("Access-Control-Allow-Headers", "Content-Type, x-requested-with, X-Custom-Header"); 
     chain.doFilter(req, res); 

    } 

    @Override 
    public void destroy() { 
     // TODO Auto-generated method stub 

    } 

} 

Мой REST метод в моем RestController:

@RequestMapping(value = "/localbusinessusers", method = RequestMethod.PUT) 
    public LocalBusinessUser update(LocalBusinessUser localBusinessUser) { 
     log.debug("REST request to update a local business user : {}", localBusinessUser); 
     if (localBusinessUser.getId() == null) { 
      return save(localBusinessUser); 
     } else { 
      LocalBusinessUser localBusinessUser2 = localBusinessUserRepository.findOne(localBusinessUser.getId()); 
      localBusinessUser2 = localBusinessUser; 
      return localBusinessUserRepository.saveAndFlush(localBusinessUser2); 
     } 
    } 

An d, наконец, мой $ HTTP запрос:

$http.put('http://localhost:8080/localbusinessusers/' + localBusinessUser) 
 
       .success(function (data, status, headers) { 
 
        console.log('data: ' + data); 
 
       }) 
 
       .error(function (data, status, header, config) { 
 
        console.log('data: ' + data); 
 
        console.log('status: ' + status); 
 
        console.log('header: ' + header); 
 
        console.log('config: ' + config); 
 
       });

Примечание: запрос PUT работает с использованием Advanced REST Client

ответ

4

Если Опции запросы, которые запрещены, вы можете настроить DispatcherServlet, чтобы отправить все варианты запросов, добавив это в ваш application.properties:

spring.mvc.dispatch-options-request=true 

Для получения дополнительной информации о параметрах запросов и Spring MVC с использованием Spring бутса, есть хороший пост для Handling Options Request using Spring Boot

Вы также можете попробовать примеры в этой должности для работы с CORS и поддержкой опции запросов путем создания простого контроллер возвращает NO_CONTENT для всех запросов параметров: http://dontpanic.42.nl/2015/04/cors-with-spring-mvc.html

+0

Я отредактировал файл application.properties, но все равно получаю те же ошибки – jemlifathi

+0

Я обновил ответ с помощью дополнительной ссылки. – pczeus

+0

Помог ли вам контроллер запроса NO_CONTENT? – pczeus