bot*_*bot 6 ajax ruby-on-rails cors backbone.js cordova
我正在构建一个使用backbone.js和Rails后端的Phonegap应用程序.在创建新用户时,我收到了与CORS相关的错误:
我正在运行我的PhoneGap网络应用程序http://0.0.0.0:8000
($ python -m SimpleHTTPServer),并在webrick上运行我的Rails应用程序http://0.0.0.0:3000
($ rails服务器).
尝试在Backbone中创建一个新的"Spot"时会出现问题(chrome js控制台):
> s = new App.Models.Spot()
(creates Spot)
> s.save()
(returns error Object)
OPTIONS http://0.0.0.0:3000/spots.json 404 (Not Found) jquery-1.8.2.js:8416
XMLHttpRequest cannot load http://0.0.0.0:3000/spots.json. Origin http://0.0.0.0:8000 is not allowed by Access-Control-Allow-Origin.
Run Code Online (Sandbox Code Playgroud)
这是我的应用程序控制器:
def set_access_control_headers
headers['Access-Control-Allow-Origin'] = 'http://0.0.0.0:8000'
headers['Access-Control-Request-Method'] = 'POST, GET'
end
Run Code Online (Sandbox Code Playgroud)
我已经阅读了很多文章,并且我可以获得的最远的是修改我的routes.rb以包含这个:
match '*all' => 'application#cor', :constraints => {:method => 'OPTIONS'}
Run Code Online (Sandbox Code Playgroud)
在我的application_controller.rb中
def cor
headers["Access-Control-Allow-Origin"] = "*"
headers["Access-Control-Allow-Methods"] = %w{GET POST PUT DELETE OPTIONS}.join(",")
headers["Access-Control-Allow-Headers"] = %w{Origin Accept Content-Type X-Requested-With X-CSRF-Token}.join(",")
head(:ok) if request.request_method == "OPTIONS"
end
Run Code Online (Sandbox Code Playgroud)
添加路径和'cor'方法将允许我进行保存,但是,删除记录时我将遇到相同的错误.
我得到了CORS的基本概念,我无法访问具有与我的请求来源不同的域的服务器.但是,如何使用Rails,Backbone,Phonegap来确定这一点并不清楚.任何帮助都会很棒,谢谢!
归档时间: |
|
查看次数: |
5573 次 |
最近记录: |