gpt4 book ai didi

ruby-on-rails - Rails、Backbone、PhoneGap、CORS(Access-Control-Allow-Origin 错误不允许)

转载 作者:行者123 更新时间:2023-12-04 15:46:12 25 4
gpt4 key购买 nike

我正在使用backbone.js 和Rails 后端构建一个Phonegap 应用程序。创建新用户时,我收到与 CORS 相关的错误:

我在 http://0.0.0.0:8000 上运行我的 PhoneGap 网络应用程序($ python -m SimpleHTTPServer),并在 http://0.0.0.0:3000 上的 webrick 中运行我的 Rails 应用程序($ 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.

这是我的应用程序 Controller :
def set_access_control_headers
headers['Access-Control-Allow-Origin'] = 'http://0.0.0.0:8000'
headers['Access-Control-Request-Method'] = 'POST, GET'
end

我读过很多文章,我能得到的最远的地方是在修改我的 routes.rb 以包含以下内容时:
match '*all' => 'application#cor', :constraints => {:method => 'OPTIONS'}

在我的 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

然后添加路由和“cor”方法将允许我进行保存,但是,删除记录时我会遇到同样的错误。

我了解了 CORS 的基本概念,我无法访问与我的请求来源不同的域的服务器。但是我不清楚如何使用 Rails、Backbone、Phonegap 进行设置。任何帮助都会很棒,谢谢!

最佳答案

我关注了this article (“Rails 中的 CORS”部分)它对我有用。

我改if request.method == :optionsif request.method == 'OPTIONS'并将方法 PUT、DELETE 添加到 headers['Access-Control-Allow-Methods'] .在 Access-Control-Allow-Origin 中插入“*”我有 localhost:8080 (我在 nginx 上运行我的应用程序)。

希望这会有所帮助。

PD:您的应用程序 Controller 中有过滤器( Hook )吗?

关于ruby-on-rails - Rails、Backbone、PhoneGap、CORS(Access-Control-Allow-Origin 错误不允许),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13910315/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com