【问题标题】:JSON API error with XMLHttpRequestXMLHttpRequest 的 JSON API 错误
【发布时间】:2015-10-05 06:18:59
【问题描述】:

我正在尝试使用 JSON 从 API 获取一些数据 来自外部 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 无法加载 url 请求的资源 Origin 上没有“Access-Control-Allow-Origin”标头

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

【问题讨论】:

标签: json ajax api


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 它不是错字,哈哈,我编辑了开发人员希望 api 保持安静的 ip,但是那里有点安静,没有太多帮助,我会看看 cors 链接
    • @WarLion 好吧,这是我的一个项目中的一个案例.. 很酷希望 CORS 链接对您有所帮助..
    猜你喜欢
    • 2021-06-03
    • 2020-10-15
    • 2014-08-19
    • 2022-01-16
    • 2016-06-18
    • 1970-01-01
    • 2016-12-09
    • 2015-01-15
    • 1970-01-01
    相关资源
    最近更新 更多