работа с Java 11, eclipse, Gradle и spring в Ubuntu OS
Пока мои POST-вызовы работают нормально, GET-вызовы на сервер блокируются из-за политики CORS с ошибкой ниже:
Доступ к XMLHttpRequest по адресу 'http://localhost: 8080 / dices / Players ? {}' From origin 'http://localhost' заблокирован Политика CORS: Ответ на запрос предварительной проверки не проходит проверку контроля доступа: в запрошенном ресурсе отсутствует заголовок «Access-Control-Allow-Origin».
javascript для POST и GET вызывает:
$(document).ready(function(){
$('#newUserButton').click(function(){
$.ajax({
type: 'POST',
url: 'http://localhost:8080/dices/players',
contentType: 'application/json',
xhrFields: { withCredentials: true },
data: JSON.stringify({"name":$('#newUserInput').val()}),
dataType: 'json',
success: function(data) {
$('#newUserJumbo').append('<div class="alert alert-success" role="alert">El usuari ' + data.name + ' ha estat creat</div>');
},
error: function(e){
console.log(e);
}
});
});
});
$(document).ready(function(){
$('#searchUserButton').click(function(){
$.ajax({
type: 'GET',
url: 'http://localhost:8080/dices/players',
contentType: 'application/json',
xhrFields: { withCredentials: true },
data: JSON.stringify({"idPlayer":$('searchUserInput').val()}),
dataType: 'json',
success: function(data) {
$('#modifyUserUl').append('<button type="button" class="list-group-item list-group-item-action" id="' + data.id + ' onclick=modifyUser(' + data.id + '>id: ' + data.id + ', nom: ' + data.name + '</button>');
},
error: function(e){
console.log(e);
}
});
});
});
Для обработки CORS на стороне сервера, я использую следующий класс, который я нашел в mozilla mdnwebDo c здесь , который работает нормально с вызовом POST, но не работает на GET
код, который обрабатывает вызов GET, выглядит следующим образом:
@CrossOrigin(origins = "http://lvh.me:8080")
@GetMapping("/players/player")
public Player getPlayer(@RequestBody Player newPlayer){
try {
return (Player) repository.findFirstByNameLike(newPlayer.getName());
} catch (EmptyResultDataAccessException e) {
throw new PlayerNotFoundException(newPlayer.getName());
UPDATE 1
Как прокомментировал Альберт, я изменили http://localhost на http://lvh.me, чтобы увидеть, работает ли этот код, но нет выхода. Также я отредактировал изменение кода моего контроллера с @PathVariable на @RequestBody (так как мой POST-запрос на тот же контроллер с телом json работает) также с эффектом. Наконец, благодаря комментариям Кевина, я также изменил способ обработки политики CORS с глобального подхода на подход с контроллером, также без выхода. Я изменил код выше, чтобы отразить c эти изменения.
Любые комментарии и предложения приветствуются. Спасибо, спасибо