我正在使用Ember App套件和Ember Data与服务器进行通信,直到现在一切都运行良好,我设法使用RESTAdapter创建模型并检索数据。
我使用Symfony2实现了JSON API。
但是现在当我想将编辑后的数据保存到服务器时,当我在模型上调用save()方法时,它会向服务器发送OPTIONS请求,但XMLHttpRequest无法加载http://myservice.ge/customers/1。 Access-Control-Allow-Methods不允许使用方法PUT。
我知道您无法将PUT请求从浏览器发送到其他域,我不会问如何执行此操作。
我的问题是如何使用Ember App Kit及其功能,并在同一个域上提供服务和前端应用程序?当我使用grunt启动Ember App Kit时,它从端口8000开始,我的服务于PHP的apache在端口80上运行。
我可以使用grunt将Ember App Kit的生成结果复制+粘贴到与apache相同的域中,但如果有更好的解决方案,我会徘徊。
答案 0 :(得分:0)
也许这不是最好的方法,但它对我有用。
此解决方案适用于symfony2,但同样的逻辑可以在任何地方使用。
我刚将此添加到app_dev.php(或者您应用的入口点的任何位置):
header('Access-Control-Allow-Methods: GET, POST, PUT, OPTIONS');
header('Access-Control-Allow-Headers: content-type ');
header('Access-Control-Allow-Headers: accept, content-type ');
现在,如果你使用Symfony2,你必须添加"方法" routing.yml文件中路由的参数:
routing.yml中的路由器示例:
user_update:
pattern: /users/{id}
defaults: { _controller: YourBundle:User:update }
methods: [PUT, OPTIONS]