Javascript 否';访问控制允许原点';从服务器接收JSON数据时的标头

Javascript 否';访问控制允许原点';从服务器接收JSON数据时的标头,javascript,java,json,xmlhttprequest,Javascript,Java,Json,Xmlhttprequest,我试图让客户端从服务器接收JSON数据,但是,它不断弹出错误方法。当我尝试使用Chrome进行调试时,它突然出现:XMLHttpRequest无法加载http://localhost:8080/TransportationNetwork/rest/paths?st=36.请求的资源上不存在“Access Control Allow Origin”标头。因此,不允许访问源站“null”。 我曾尝试将数据类型更改为“jsonp”,但它不起作用。然而,当我使用POSTMAN测试来自服务器的数据时,一切

我试图让客户端从服务器接收JSON数据,但是,它不断弹出错误方法。当我尝试使用Chrome进行调试时,它突然出现:
XMLHttpRequest无法加载http://localhost:8080/TransportationNetwork/rest/paths?st=36.请求的资源上不存在“Access Control Allow Origin”标头。因此,不允许访问源站“null”。

我曾尝试将数据类型更改为“jsonp”,但它不起作用。然而,当我使用POSTMAN测试来自服务器的数据时,一切正常,我可以看到JSON数据来自服务器

下图显示了邮差的测试结果:

以下是我在服务器端和客户端的代码: 有人能告诉我如何为我的java代码添加“Access Control Allow Origin”头吗?(如果是这个问题)

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);
}  
}
@Path(“/Path”)
公共类路径资源{
八道八道;
公共路径资源(){
pathDao=新的pathDao();
}
@得到
@产生(MediaType.APPLICATION_JSON)
//@消耗(“文本/普通”)
公共列表路径信息(@QueryParam(“st”)字符串st){
System.out.println(“搜索路径:“+st”);
返回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>');
    });
}
var serviceURL=”http://localhost:8080/TransportationNetwork/rest/paths";
$(“#FindPath”)。单击(函数(){
getpath();
});
函数getpath(){
log(“显示路径”);
$.ajax({
类型:'GET',
url:serviceURL,
数据类型:'json',//从服务器返回的数据类型
数据:'st='+dataToServer(),//数据发送到服务器
成功:renderList,
错误:函数(jqXHR、textStatus、errorshown){
警报('路径查找器:'+文本状态);
}
});
}
函数dataToServer(){
var数组=”;
str1=$('#source').val();
str2=$('#target').val();
数组=str1+“,”+str2;
返回数组;
}
函数renderList(数据){
//var parsedData=JSON.parse(数据);
var list=data==null?[]:(数组的数据实例?数据:[data]);
$('#路径列表li')。删除();
$.each(列表、函数(索引、路径){
$(“#路径列表”).append(“
  • ”+path.source+”->“+path.target+”:“+path.weight+”
  • ”); }); }
    请参考下面的链接谢谢,但我还是不明白,这是另一种情况。如果我使用这个,我需要完全更改我的代码。那会很费时@anaspawhat是您遇到错误的页面的url只有一个url:在服务器端,当客户端使用GET方法时,它会发送回服务器。“st”是一个变量,用于发送字符串“m,n”,如代码中所示@Marks@user3765602对不起,我指的是网页url,不是您请求的web服务