Javascript 否';访问控制允许原点';从服务器接收JSON数据时的标头
我试图让客户端从服务器接收JSON数据,但是,它不断弹出错误方法。当我尝试使用Chrome进行调试时,它突然出现: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测试来自服务器的数据时,一切
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服务