2016-07-24 95 views
0

我試圖建立一個我沒有在我試圖連接到服務器控件的快速演示現場。這裏是我用來用AngularJS構建它的代碼。我通過一個簡單的Python HTTP Server運行該文件,並在localhost:8000上查看它。 var retrieveAppliances = function(){ console.log('試圖檢索設備列表。');沒有「訪問控制允許來源」標頭,AngularJS

var requestUrl = '****'; 
    $http({ 
     method: 'GET', 
     url: requestUrl, 
    }) 
    .then(function (response) { 
     console.log(response); 
    }); 
}; 
retrieveAppliances(); 

我已閱讀多個地方嘗試切換到methodJSONP這樣做導致瞭解析錯誤。

儘管我已經考慮嘗試構建一個server.js文件並使用它運行NodeJS,但我並沒有成功學習製作AJAX請求的基礎知識,並將其代理到我的app.js.

我將不勝感激任何幫助,有人也許能夠給我,有明確和容易遵循的步驟。

回答

4

如果你正在運行一個Ajax調用不同來源(例如不同的主機,端口或協議),在此原點的服務器沒有跨起源請求的支持,那麼你就無法修復,從您的客戶端。客戶無法做任何事情。

如果服務器支持JSONP,你可以使用,但也需要特定的服務器支持。

從瀏覽器的網頁,唯一的解決方案是:

  1. CORS目標服務器上的支持。
  2. JSONP(也需要在目標服務器上支持)。
  3. 建立自己的服務器,你有機會獲得(或者在現有的網頁域與CORS),然後讓該服務器獲取文件/數據對您和代理回給你。您可以編寫自己的代理或部署預構建的代理。
  4. 找到一些您可以使用的現有第三方代理服務。

如果你有興趣製作自己的node.js代理,你可以在這裏看到一個簡單的例子:How to create a simple http proxy in node.js?

+0

也是第三方代理服務是另一種 – charlietfl

+0

@charlietfl - 我加了這樣的選擇。 – jfriend00

+0

Upvoted。完全同意解決方案。這不是你的Web應用程序的問題。這是一個服務器。 @ jfriend00你可以發佈第4點(第三方代理)的小參考嗎?這對我來說是新東西,我想了解更多關於它 –

相關問題