开发者问题收集

XMLHttpRequest 的 JSON API 错误

2015-10-05
65

我尝试使用 JSON 从外部 API 获取一些数据

API URL 如下

http://60.62.62.62:8586/api/village/197571446817

数据如下:

{
"userId": 197571446817,
"currentHomeId": 197571446817,
"clanId": 15489654523,
"clanName": "vlsn_nsmr",
"clanBadge": 1744850005,
"clanRole": "title",
"clanWar": 7,
"numberLogin": 0,
"secondsLogin": 0,
"league": "CRYSTAL_III",
"townHallLevel": 9,
"userName": "somename",
"level": 114,
"XP": 5516,
"gems": -234935969,
"freeGems": 0,
"attackRating": -721481846,
"attackKFactor": -1987233268,
"trophies": 1925,
"attackWinCount": 308,
"attackLoseCount": -1998035130,
"defenseWinCount": 3,
"defenseLoseCount": -840248882,
"nameChosenByUser": true,
"nameChanged": 0,
"villageImg": "",
"boughtGems": -1906210374
}

到目前为止一切顺利。但是,我尝试使用 getJson 获取一些值:

$.getJSON('http://62.4.23.229:8338/api/village/197571446817', function(data) {
    console.log(data.userName)
}

我得到了这个:

XMLHttpRequest cannot load url No 'Access-Control-Allow-Origin' header is present on the requested resource Origin

我尝试使用 jsonp,但运气不佳,似乎这个 API 不喜欢回调。有人知道如何从该 API 获取该信息吗?

2个回答

错误消息 Access-Control-Allow-Origin 表示 API 在 Header 中有安全约束。您需要联系您的 api 提供商以获取更多详细信息。

DSA
2015-10-05

您正在向与页面所在域不同的域执行 XMLHttpRequest。因此浏览器会阻止它,因为出于安全原因,它通常允许来自同一来源的请求。
可能的解决方案:- 如何使用 CORS 实现此目的。
启用 CORS 的最简单方法是将必要的标头(如 Access-Control-Allow-Origin)添加到服务器的响应中
我还建议检查它是否只是目标域中的拼写错误。

Viraj Nalawade
2015-10-05