2013-05-31 37 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

,就像一个魅力!谢谢:) –