2014-09-26 56 views
-2

我想從這個網站 https://bitcoinindex.es/api/v0.1/coinbase/usd/btc/lastCORS不適用於Angular?

GET信息使用$ http服務

尋找所有在互聯網上以後這裏是我的CoffeeScript代碼

angular.module('blackmoonApp') 
    .controller 'PricingCtrl', ($scope, $http) -> 
    $http.defaults.useXDomain = true 
    $http.get("https://bitcoinindex.es/api/v0.1/coinbase/usd/btc/last", 
     headers: 
     "Access-Control-Allow-Origin": "*" 
    ).success (JSON) -> 
     console.log JSON 

結果是

"XMLHttpRequest cannot load https://www.bitstamp.net/api/ticker/. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:9000' is therefore not allowed access." 

我不確定網站是否阻止了我(哪個wou沒有道理,因爲它是一個API),或者如果AngularJS不能使用CORS。

回答

2

Access-Control-Allow-Origin響應標題。

此:

headers: 
    "Access-Control-Allow-Origin": "*" 

...設置一個請求報頭。

您需要將它設置爲https://www.bitstamp.net/api/ticker/,而不是在您的JavaScript中。

如果任何JavaScript可以授予自己訪問任何服務器的權限,它將擊敗對象。


我不知道如果該網站阻止我(這是沒有意義的,因爲它是一個API)

阻塞是默認行爲。必須授予顯式權限才能允許來自其他來源的JavaScript訪問。否則,任何擁有bitstamp帳戶的人都可能通過訪問使用該API的網站(因爲它將是他們的瀏覽器和他們的cookie,提出請求)而使他們的比特幣被盜。

+1

這是一個公共API,雖然文檔在這裏https:// bitcoinindex。es/api – grasshopper 2014-09-26 20:39:03

1

從代碼:

$http.get("https://www.bitstamp.net/api/ticker/", 
    headers: 
    "Access-Control-Allow-Origin": "*" 
) 

我們看到,您嘗試發送Access-Control-Allow-Origin頭中的GET要求

CORS不能這樣工作; Access-Control-Allow-Origin標頭必須存在於由服務器發送的響應中(當然,這樣的標頭必須包括髮送該請求的頁面完全相同的域)。

從我的測試(不可能的,但你的結果可能會有所不同):

  • https://bitcoinindex.es/api/v0.1/coinbase/usd/btc/last只允許自己的域(響應了Access-Control-Allow-Origin:https://bitcoinindex.es),這是一種毫無意義的CORS請求;和
  • https://www.bitstamp.net/api/ticker/根本沒有Access-Control-Allow-Origin標頭。
+0

那麼爲什麼bitstamp不能工作呢? – grasshopper 2014-09-26 20:40:41

+0

我不明白你的意思。你能改說嗎? - 看,你可以在'https:// bitcoinindex.es /'上向一個服務發出一個Ajax請求,要麼將請求的HTML頁面部署在'https:// bitcoinindex.es /'或者,如果它被部署在其他地方(比如http://www.grasshopper.com),那麼'https:// bitcoinindex.es /'必須在其響應中包括'Access-Control-Allow-Origin:http://www.grasshopper.com'。由於它目前不包括該標題中的任何內容,因此瀏覽器正在向您提供該錯誤。 – acdcjunior 2014-09-26 20:47:03

+0

所以它只是巧合我嘗試的每個API都沒有標題?這一個適用於我使用Curl w/php,但與$ http相同的錯誤。 http://data.bter.com/api/1/marketlist – grasshopper 2014-09-26 20:49:34