Я использую 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
Я отредактировал файл application.properties, но все равно получаю те же ошибки – jemlifathi
Я обновил ответ с помощью дополнительной ссылки. – pczeus
Помог ли вам контроллер запроса NO_CONTENT? – pczeus