2016-05-17 32 views
1

我在localhost:3000上運行nodejs應用。我有一個前端教程角頁面調用本地主機這樣的...

$scope.msg = 'requesting'; 
    $http({ 
    method: 'GET', 
    url: 'http://localhost:3000/' 
    }).then(function(response) { 
    $scope.msg = response; 
    }, function(response) { 
    $scope.msg = 'err ' + JSON.stringify(response); 
    }); 

我可以從我的節點應用程序控制臺,它與200應答和JSON對象{foo:'bar'}看到。但$scope.msg變量最終看起來像這樣...

err { 
    "data":null, 
    "status":-1, 
    "config":{ 
     "method":"GET", 
     "transformRequest":[ 
     null 
     ], 
     "transformResponse":[ 
     null 
     ], 
     "url":"http://localhost:3000/", 
     "headers":{ 
     "Accept":"application/json, text/plain, */*" 
     } 
    }, 
    "statusText":"" 
} 

爲什麼客戶認爲有當服務器產生了良好的反響有問題嗎?在瀏覽器中運行請求可以正常工作。

載入角度頁面(http://localhost:9000)瀏覽器的開發工具,我看到這個...

enter image description here

但由於某些原因,響應選項卡爲空。當我用瀏覽器發送同樣的請求(http://localhost:3000/)並觀看時,我會在響應選項卡中看到JSON。

+0

您在瀏覽器控制檯中看到什麼?你是否與同源政策作鬥爭? – SLaks

+0

@SLaks做相同的主機,不同的端口數作爲同一個來源? – user1272965

+0

@SLaks ...啊。控制檯!是的,它確實表明「Access-Control-Allow-Origin頭部存在於所請求的資源中......因此不允許,現在我要去谷歌瞭解我是否可以學習如何解決。有用的提示 – user1272965

回答

2

由於SLaks在評論中提到,這是因爲同源政策。您的節點應用在localhost:3000上運行,而您的客戶端在localhost:9000上。

您需要在服務器端設置Access-Control-Allow-Origin標頭,以允許來自localhost:9000的請求。

-1

確保你的服務器應答與正確的內容類型頭:

Content-Type:application/json; charset=utf-8 
相關問題