2015-05-21 50 views
3

我正在開發一個使用ember-cli的應用程序,它需要使用ProxyPass向服務器發送http請求。Ember-cli ProxyPass

我的服務器看起來是這樣的:subdomain.domain.com/api/clients/users和灰燼,CLI默認創建http://localhost:4200/

我試圖做這在我的http.conf:

ProxyPass /api/clients http://subdomain.domain.com/api/clients 

這是爲了http://localhost/api/clients工作正常,但我不知道如何使它可與非標準的端口,如4200

我也嘗試創建一個虛擬主機,但它是相同的:

<VirtualHost *:4200> 
    ProxyPass /api/clients http://subdomain.domain.com/api/clients 
</VirtualHost> 

我該怎麼做?

[編輯]: 設置我RESTAdapter這樣的:

var ApplicationAdapter = DS.RESTAdapter.extend({ 
    namespace: 'api/clients' 
}); 
+0

目前還不清楚你在這裏要求什麼。當您將您的應用程序應用程序部署到生產環境時,它通常位於端口80上(您不需要使用ember-cli爲生產環境中的站點提供服務),並且您將使用ProxyPass將API從任何其他端口引導到端口80.您是否在開發過程中詢問如何針對您的API進行測試?如果是的話,你不需要Apache。 –

+0

我在本地主機上安裝了應用程序應用程序,不在服務器上部署,代理服務器僅用於本地主機apache而不用於服務器。 我需要從我的本地主機設置它,所以我將能夠發送請求到服務器。對不起,如果我不清楚.. 因爲如果我在我的應用程序中設置一個主機和一個命名空間,它會拋出我這個:'o'Access-Control-Allow-Origin'標題出現在請求的資源上。原因'http:// localhost:4200'因此不被允許訪問。' – SuperMarco

回答

4

在開發過程中,你應該使用HTTP代理生成器來創建你的API的路徑。 ember help generate列出了語法:

http-proxy <local-path> <remote-url> 
    Generates a relative proxy to another server. 

這產生,只有在開發過程中存在(在/server/proxies/)的代理,而不是在生產版本編譯的。這可能是你在找什麼,根據您上面提供的內容:

ember generate http-proxy api http://subdomain.domain.com 

灰燼使用node-http-proxy創建代理,讓您可以更使用文檔如果有必要對其進行自定義。

+0

看來,這正是我正在尋找的。我做了「生成http-proxy api http://subdomain.domain.com/api」,但它嘗試訪問http:// localhost:4200/api/clients/users來獲取GET,而不是http://子域。 domain.com/api/clients/users。我需要設置其他東西嗎? – SuperMarco

+0

*應該*在本地主機上擊中API,但是如果它的工作正常,則應該將呼叫代理到其他站點。也許它應該是/ api而不是api - 轉到'/ server/proxies/api.js'並檢查頂部的proxyPath變量。如果它讀取'proxyPath ='api'',請嘗試將其更改爲''/ api''並查看它是否修復它。您應該可以手動打開http:// localhost:4200/api/clients/users的API,並看到相同的響應,就像您打到子域路徑一樣。 –

+0

看來,如果我們沒有設置一個在任何情況下都是api.js中正確的proxyPath的話,那麼它似乎會自動生成放置/。甚至試圖手動命中網址,但它是404。我甚至嘗試運行燼寶服務器--proxy http://subdomain.domain.com/api/但它是一樣的東西 – SuperMarco