У меня есть angular приложение, которое пытается отправить ajax запросы в java бэкэнд (API, построенный на Джерси).
Вот запрос клиента:
let settings = {
"url": "http://localhost:8080/simulator/config",
"method": "POST",
"timeout": 0,
"headers": {
"Content-Type": "application/json"
},
"data": JSON.stringify({
"fromDate": fromDate,
"tsIntervalTag": tsIntervalTag,
"tsIntervalDevice": tsIntervalDevice,
"devicePerMinute": devicePerMinute,
"tagPerMinute": tagPerMinute,
"quantityOfTags": quantityOfTags,
"quantityOfDevices": quantityOfDevices
}),
};
$.ajax(settings).done(function (response) {
console.log(response);
});
А вот обработчик запросов java:
@POST
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public Response postIt(String body) {
try {
//do stuff
return Response.ok(body, MediaType.APPLICATION_JSON).header("Access-Control-Allow-Origin", "*").build();
} catch (Exception e) {
return Response.serverError().entity(e).header("Access-Control-Allow-Origin", "*").build();
}
}
Как видите, поскольку почти все ответы о состоянии CORS, заголовок Access-Control-Allow-Origin
установлен в *
подстановочный знак, поэтому, насколько я понимаю, ответ должен вернуться в браузер.
Но консоль браузера возвращает следующее:
Запрос перекрестного происхождения заблокирован: тот же источник Политика запрещает чтение удаленного ресурса по адресу http://localhost: 8080 / simulator / config . (Причина: отсутствует заголовок CORS «Access-Control-Allow-Origin»).
Запрос перекрестного источника заблокирован: та же политика происхождения запрещает чтение удаленного ресурса в http://localhost: 8080 / simulator / конфигурации . (Причина: запрос CORS не был выполнен).
Так что я пропустил?