Нет заголовка "Access-Control-Allow-Origin" при получении данных JSON с сервера
Я пытаюсь заставить клиентскую часть получать данные JSON с сервера, однако постоянно выявляется метод ошибок. Когда я пытаюсь использовать Chrome для отладки, он появляется: XMLHttpRequest cannot load http://localhost:8080/TransportationNetwork/rest/paths?st=3,6. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access.
Я попытался изменить dataType на "jsonp", но он не работает. Однако, когда я использую POSTMAN для проверки данных с сервера, все работает нормально, я вижу, что данные JSON поступают с сервера.
Вот изображение показывает результат тестирования POSTMAN: Изображения показывают результат тестирования POSTMAN с сервера
Ниже приведен мой код как на стороне сервера, так и на стороне клиента: Может ли кто-нибудь сказать мне, как добавить заголовок "Access-Control-Allow-Origin" для моего кода Java?(Если это проблема)
Код Java:
@Path("/paths")
public class PathsResource {
PathDao pathDao;
public PathsResource() {
pathDao = new PathDao();
}
@GET
@Produces(MediaType.APPLICATION_JSON)
//@Consumes("text/plain")
public List<DirectedEdge> pathsInfo(@QueryParam("st") String st) {
System.out.println("Searching paths : " + st);
return pathDao.getEdgeList(st);
}
}
Javascript:
var serviceURL = "http://localhost:8080/TransportationNetwork/rest/paths";
$('#findPaths').click(function() {
getPaths();
});
function getPaths() {
console.log('display paths');
$.ajax({
type:'GET',
url: serviceURL,
dataType:'json', // data type get back from server
data:'st=' + dataToServer(), //data sent to server
success: renderList,
error: function(jqXHR, textStatus, errorThrown){
alert('Path Finder: ' + textStatus);
}
});
}
function dataToServer() {
var array = "";
str1 = $('#source').val();
str2 = $('#target').val();
array = str1 + "," + str2;
return array;
}
function renderList(data) {
//var parsedData = JSON.parse(data);
var list = data == null ? [] : (data instanceof Array ? data : [data]);
$('#PathList li').remove();
$.each(list, function(index, path) {
$('#PathList').append('<li>'+ path.source + ' -> ' + path.target + ': ' + path.weight + '</li>');
});
}