2016-08-16 72 views
1

我的前端代碼是在角節點上運行的httpserver端口127.0.0.1:8081 我的後端服務在端口127.0.0.1:9000 雖然在Python Django框架捉迷藏從角HTTP方法調用我的後端servies拋出異常CORS所以 我寫了一個代理控制器我節點JS寫在節點JS反向代理調用API在Django

var http = require('http'), 
httpProxy = require('http-proxy'); 

var proxy = httpProxy.createProxyServer(); 

http.createServer(function (req, res) { 
    // This simulates an operation that takes 500ms to execute 
    setTimeout(function() { 
     proxy.web(req, res, { 
      target: 'http://127.0.0.1:9000/dummy/' 
     }); 
    }, 500); 
}).listen(8080, "127.0.0.1"); 

傾聽並綁定在角。我運行的節點proxycontroller.js,結果另一個端口號127.0.0.1:8080

從代理控制器它調用我的後端服務和結果json,但從角js調用代理控制器從http.get()方法結果cors問題

請幫忙解決這個問題。

回答

0

在Django啓用CORS

使用該第三方的lib django-cors做到這一點。

你得到CORS,因爲你是從你的AngularJS應用程序進行調用和它的主人是127.0.0.1:8081,從你的Django應用主機127.0.0.1:9000

+0

我已經添加了Django的CORS,但仍然在報告前端 – jayanthanantharapu

+0

的CORS'$ HTTP({ \t方法: 'GET', \t網址: '127.0.0.1:9000/dummy/' \t}) 。然後(函數successCallback(響應){ \t //這個回調函數將被異步調用 \t //當響應可用 \t $ scope.success = response.data; \t的console.log(success.server); \t},函數errorCallback(響應){ \t //如果發生錯誤,則異步調用 \t //或服務器返回錯誤狀態的響應。 \t console.log('get call中的錯誤'); \t});' – jayanthanantharapu

+0

@ user288093你有什麼在你的ALLOWED_HOST在你的settings.py – levi

0

錯誤說CORS僅對HTTP等特定protocals支持的不同://等等。所以你必須添加http到那個URL。當你說127.0.0.1時,瀏覽器無法理解使用哪個協議來訪問該URL,它應該使用http://或data://或chrome://等等。所以你必須明確地說http://

您必須在後端配置cors。後端(API服務器)非常明確地說,使用我之前指定的http標頭允許站點。否則,我可以打開您的網站,使用Chrome控制檯編輯前端並刪除所有安全內容。它在後端。

作爲http://127.0.0.1:9000來自前端角度的應用程序,dosent需要創建代理服務器以將調用轉移到後端服務。