Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 跨域AJAX不工作,即使使用通配符源_Javascript_Ruby_Ajax_Sinatra - Fatal编程技术网

Javascript 跨域AJAX不工作,即使使用通配符源

Javascript 跨域AJAX不工作,即使使用通配符源,javascript,ruby,ajax,sinatra,Javascript,Ruby,Ajax,Sinatra,在我的网站上,我试图通过API将Bitstamp价格与客户端的Javascript请求集成在一起。我一直收到这个错误: XMLHttpRequest cannot load http://www.bitstamp.net/api/ticker/. Origin http://bitalarm.com is not allowed by Access-Control-Allow-Origin. 我在运行比特币警报的Sinatra应用程序中更改了标题,将访问控制允许来源设置为通配符。我知道这是因为

在我的网站上,我试图通过API将Bitstamp价格与客户端的Javascript请求集成在一起。我一直收到这个错误:

XMLHttpRequest cannot load http://www.bitstamp.net/api/ticker/. Origin http://bitalarm.com is not allowed by Access-Control-Allow-Origin.
我在运行比特币警报的Sinatra应用程序中更改了标题,将访问控制允许来源设置为通配符。我知道这是因为卷曲:

$curl -I http://bitalarm.com
HTTP/1.1 200 OK 
Content-Type: text/html;charset=utf-8
Access-Control-Allow-Origin: *
Content-Length: 2253
X-Xss-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
Vary: Accept-Encoding
Server: WEBrick/1.3.1 (Ruby/2.0.0/2013-08-29)
Date: Thu, 31 Oct 2013 01:39:08 GMT
Connection: Keep-Alive
不幸的是,我仍然得到错误。我是否应该更改标题的其他部分以使其正常工作

下面是访问该API的javascript。这只是jQuery的GET请求

url: 'http://www.bitstamp.net/api/ticker/',

getPrice: function(callback){
    $.get(app.api.bitstamp.url, function(data){
    callback({
        value: data.data.last_local.value,
        display: data.data.last_local.display
    });
});

您正在尝试从另一个域访问API,因此您的域应该在API服务器中被列为白名单

请检查API服务器中的配置。

API站点(www.bitstamp.net)没有
访问控制允许源站
标题集

您提供的CURL示例是向您的站点发出的请求;对bitstamp站点的请求,而对bitstamp的实际CURL请求显示了一些稍微不同的内容:

$ curl -I http://www.bitstamp.net/api/ticker/
HTTP/1.1 302 Found
Date: Thu, 31 Oct 2013 01:58:04 GMT
Server: Apache
Location: https://www.bitstamp.net:443/api/ticker/
Connection: close
Content-Type: text/html; charset=iso-8859-1
Set-Cookie: incap_ses_156_99025=nashNbLsX1Eg32pAgDkqAiy5cVIAAAAAz1umCC4nKSJlj6EdKqS70w==; path=/; Domain=.bitstamp.net
Set-Cookie: visid_incap_99025=A7ePN/kMSnWVCoZjb2CgRSu5cVIAAAAAQUIPAAAAAABYCnOINrGBVtDw+Rx+PQs1; expires=Fri, 30 Oct 2015 08:44:52 GMT; path=/; Domain=.bitstamp.net
X-Iinfo: 11-97249264-97249266 NNNY CT(123 -1 0) RT(1383184683823 1) q(0 0 1 1) r(2 2) U6
X-CDN: Incapsula
请注意,此处未设置访问控制允许原点,这意味着浏览器将不允许请求通过


我假设您没有访问bitstamp.net服务器的权限,在这种情况下,您需要使用服务器端代理通过ajax获取数据。从您的示例CURL请求中,我猜测您的服务器端代码是用Ruby编写的。

您能向javascript显示您在哪里发出ajax请求吗?