我有这样的代码:
<script>
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function () {
if(xhr.readyState === 4 && xhr.status === 200) {
var data = JSON.parse(xhr.responseText);
var ex_rate = data["market_price_usd"];
document.getElementById('btcusd777').innerHTML = ex_rate;
}
};
xhr.open('GET', 'https://blockchain.info/ru/stats?format=json');//&cors=true doesn't help
xhr.send();
</script>
1 BTC = <span id="btcusd777"></span> USD
但它不起作用,因为api在不同的域上。有办法以某种方式修复它吗?我不想使用jquery
答案 0 :(得分:1)
The docs声明&#34;如果您在请求中添加cors = true参数,则某些API调用可用于CORS标头。&#34; 但似乎没有是你打电话的情况。
似乎有另一个允许跨源请求的调用:
https://blockchain.info/ru/q/24hrprice
所以只需调整你的电话:
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function () {
if (xhr.readyState === 4 && xhr.status === 200) {
document.getElementById('btcusd777').innerHTML = xhr.responseText;
}
};
xhr.open('GET', 'https://blockchain.info/ru/q/24hrprice');
xhr.send();
&#13;
1 BTC = <span id="btcusd777"></span> USD
&#13;
答案 1 :(得分:0)
它似乎不支持CORS,因此如果您无法控制API开发,我认为就是这种情况,唯一的方法是通过您自己的Web服务器代理它。
如果你有一个nginx: https://www.nginx.com/resources/admin-guide/reverse-proxy/
如果您使用的是apache: http://httpd.apache.org/docs/2.2/mod/mod_proxy.html
请注意,jquery或任何其他javascript框架对此无效,因为它是浏览器限制。它似乎没有crossdomain.xml文件,所以flash也无济于事。