2013-05-31 80 views
2

請你能提供下列資料:EmberJs爲PhoneGap的外部API

我使用Rails作爲後端寫在emberjs一個Web應用程序。現在我打算用phonegap將此應用程序移植到iOS,而我正在努力的事情是如何設置將在iPhone中工作的API端點?

據我瞭解EmberJs當通過瀏覽器在網絡上使用時,使用您當前的位置來發出API請求,但是這種方法在使用應用程序作爲iOS應用程序時不起作用。

我真的在尋找一些優雅的解決方案來簡單地替換主機名或其他東西?

感謝您的幫助!

UPDATE:

這一個適用於改變API URL

DS.RESTAdapter.reopen({ 
    url: 'http://somedomain.com' 
}); 

但現在,有訪問控制研究的問題:

Origin http://somedomain.com is not allowed by Access-Control-Allow-Origin. 
+0

我試着用搜索引擎這一點,至今沒有運氣,現在通過餘燼數據的源代碼瀏覽找到線索。 –

回答

4

既然你還沒有發佈任何代碼關於如何配置適配器,這是爲適配器設置自定義url的正確方法:

DS.RESTAdapter.reopen({ 
    url: 'https://somedomain.com/api' 
}); 

然後,如果你有一個模型,例如App.UserApp.User列表的請求現在分別爲https://somedomain.com/api/user/和特定用戶標識爲https://somedomain.com/api/user/123

更新

當從您必須與標誌--disable-web-security啓動瀏覽器(假設鉻)進行交叉起源的工作瀏覽器進行測試。但在現實生活您必須配置您的服務器使用設置響應HTTP HEADERS

Access-Control-Allow-Origin: * 
Access-Control-Allow-Methods: GET, POST, ... 

所以在軌的,你可以做這樣的事情來配置控制器的服務器端接受交叉起源的請求,並設置標題的情況下因此:

... 
after_filter :cors_set_access_control_headers 

def cors_set_access_control_headers 
    headers['Access-Control-Allow-Origin'] = '*' 
    headers['Access-Control-Allow-Methods'] = 'POST, GET, PUT' # etc. etc. 
    headers['Access-Control-Max-Age'] = "1728000" 
end 
... 

有關如何配置軌道CORS更廣泛的例子,你可以搜索「CORS的JSON和Rails」例如。

希望它可以幫助

+0

謝謝!這在更改URL方面起作用,但現在還有另一個問題:「訪問控制 - 允許來源不允許使用Origin http://somedomain.com/」。 –

+0

你什麼時候得到原點錯誤?從瀏覽器進行測試?如果是這樣,你必須啓動瀏覽器(假設爲chrome)並帶有「--disable-web-security」標誌來使其工作。 – intuitivepixel

+0

,就像一個魅力!謝謝:) –