' Access-Control-Allow-Origin'失踪。我的下一步应该是什么?

时间:2015-11-09 18:22:42

标签: jquery get xmlhttprequest cross-domain

我想从这里提取收益率曲线数据:

http://www.treasury.gov/resource-center/data-chart-center/interest-rates/pages/XmlView.aspx?data=yieldyear&year=2015

以下get请求返回200(OK)状态代码,但也返回一个控制台注释,说明Cross-Origin Request被阻止,因为CORS标头' Access-Control-Allow-Origin'丢失。

$.get('http://www.treasury.gov/resource-center/data-chart-center/interest-rates/pages/XmlView.aspx?data=yieldyear&year=2015', function (data) {
$(data).find("entry").each(function () { // or "item" or whatever suits your feed
    var el = $(this);

    console.log("------------------------");
    console.log("d:NEW_DATE      : " + el.find("d:NEW_DATE").text());
    console.log("d:BC_1MONTH     : " + el.find("d:BC_1MONTH").text());
    console.log("d:BC_3MONTH     : " + el.find("d:BC_3MONTH").text());
});

});

如果Access-Control-Allow-Origin未设置为' *'是否有关于访问数据的明确规则/法律(公共)?

遇到这些问题时的共识是什么?数据显然是公开的;我是否要求美国财政部更改其Access-Control-Allow-Origin设置以包含我的域名? (Access-Control-Allow-Origin Multiple Origin Domains?)。

很明显,在CORS(https://www.nczonline.net/blog/2010/05/25/cross-domain-ajax-with-cross-origin-resource-sharing/)之前有解决方法。在这种情况下,它们是否合适/合法?如果有的话,请有人建议简明扼要的资源来学习它们吗?

也许我应该放弃并找到新的数据源?

1 个答案:

答案 0 :(得分:1)

我用PHP解决了这个问题,可以从服务器端提取XML,而不是导致“Access-Control-Allow-Origin”问题的客户端javascript尝试。代码在这里:

$url = "http://www.treasury.gov/resource-center/data-chart-center/interest-rates/pages/XmlView.aspx?data=yieldyear&year=2015";
$xml = simplexml_load_file($url);
echo $xml->asXML();

在我的研究中,我走了一段错误的轨道;我正在寻找的国库收益率曲线数据是政府data.gov项目的一部分。他们为开发人员提供了一个网站here

我最初的想法是使用CKAN API,但似乎他们只在CKAN中存储元数据,而不是实际数据。