2014-06-14 82 views
2

我正嘗試連接到家中的家庭自動化服務器上​​的RESTFul API(因此不需要大規模安全性)。當我嘗試使用沒有憑據連接,我得到:Angular Digest Authentication

[Error] XMLHttpRequest cannot load http://localhost:8176/devices/. Origin http://localhost is not allowed by Access-Control-Allow-Origin. 

文檔說:

靛藍使用 「消化authentificaction」(沒有基本也不令牌)

捲曲-X PUT - -digest -u {username}:{password} -d value = {value} http:// {IPAddress}:8176/variables/{VariableToChange}

curl -X PUT --digest -u admin:p @ ssw0rd -d value = true http:// {IPAddress}:8176/variables/Var1

要獲得設備的列表,我可以用這3個之一:

http://127.0.0.1:8176/devices/ 
http://127.0.0.1:8176/devices.xml/ 
http://127.0.0.1:8176/devices.txt/ 

我就如何通過信條全盤損失。這裏是我的代碼到目前爲止:

function DeviceController($scope, $http) { 
    $http.get("http://localhost:8176/devices/") 
     .then(function (results) { 
      //Success; 
      console.log("Succss: " + results.status); 
      $scope.devices = results.data; 
     }, function (results) { 
      //error 
      console.log("Error: " + results.data + "; " 
            + results.status); 
      $scope.error = results.data; 
     }) 
}; 

任何人都可以指出我在正確的方向嗎?

感謝

馬克

+0

我覺得家庭自動化服務器需要你能想到的儘可能多的安全性。 – icebreaker

+0

@icebreaker - 不是在安全的本地網絡上時 – mark1234

回答

2

您的服務器具有配置爲接受CORS (Cross-origin resource sharing)

編輯: 它看起來像你的靛藍(不知道它是什麼)服務器是不是你的角度應用服務。請參閱您的服務器文檔,瞭解如何啓用CORS。

至於你的請求期間傳遞您的憑據,做到:

$http({ 
    method: "GET", 
    url: "http://localhost:8176/devices/", 
    headers: {"Authorization": "Basic " + btoa("admin:[email protected]")}, 
})... 
+0

@gframontina感謝您的回覆。服務器將最終成爲OS X上的apache。現在我正在Visual Studio中開發,因此它是asp網絡服務器。我發現我必須使用摘要授權,我可以只交換摘要的「基本」? (我猜不是:-(。問候馬克 – mark1234

+0

快速搜索角+摘要給了我幾個模塊,幫助處理整個過程:[https://github.com/PatrickHeneise/angular-digest-interceptor ](https://github.com/PatrickHeneise/angular-digest-interceptor)和[https://github.com/tafax/angular-digest-auth](https://github.com/tafax/angular-digest -auth)我沒有使用任何這些,但他們似乎使任務更容易。就配置服務器來啓用CORS,我沒有太多的.NET世界的經驗,但我向你保證是可能的。:-) – gtramontina

+0

感謝您的回覆。我已經關閉auth現在,但CORS是殺了我。我用VS開發,所以我的「網絡服務器」是asp.net web服務器VS開始用於調試。我把這個添加到web.comfig,但仍然沒有運氣。 mark1234