0

私のウェブサイトhttp://bitalarm.comでは、API を介して Bitstamp の価格とクライアント側からの Javascript のリクエストを統合しようとしています。私はこのエラーを受けています:

XMLHttpRequest cannot load http://www.bitstamp.net/api/ticker/. Origin http://bitalarm.com is not allowed by Access-Control-Allow-Origin.

Bitcoin Alarm を実行する Sinatra アプリのヘッダーを変更して、Access-Control-Allow-Origin をワイルドカードに設定しました。私はこれがcurlのために設定されていることを知っています:

$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
    });
});
4

2 に答える 2

1

Access-Control-Allow-OriginAPI サイト (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

ここには設定がないことに注意してくださいAccess-Control-Allow-Origin。つまり、ブラウザはリクエストの通過を許可しません。

私は、bitstamp.net サーバーにアクセスできないと仮定しています。その場合、サーバー側のプロキシを使用して ajax 経由でデータをフェッチする必要があります。サーバー側のコードがRubyで書かれているCURLリクエストの例から推測しているので、このRubyの例はそのようなプロキシを実装するのに役立つかもしれません.

于 2013-10-31T02:07:16.343 に答える
-1

別のドメインhttp://www.bitstamp.net/から API にアクセスしようとしているため、ドメインhttp://bitalarm.comは API サーバーでホワイトリストに登録されている必要があります。

API サーバーの構成を確認してください。

于 2013-10-31T01:51:58.013 に答える