【发布时间】:2014-07-10 02:08:42
【问题描述】:
我已经进行了各种搜索,但似乎无法弄清楚这一点。
我正在尝试创建一个小部件,您可以将其放在任何网站上以获取用户的反馈,该小部件会将反馈发布到我的应用程序 waterloo.herokuapp.com,用户可以登录查看他们的所有反馈。
我在我的 Rails 应用程序中使用 jquery ajax POST 方法,代码如下:
fb_form.submit(function(ev) {
$.ajax({
type: 'POST',
url: 'http://waterloo.herokuapp.com/domains/2/comments',
data: fb_form.serialize(),
success: function(data) {
console.log(data);
alert('cool, this worked');
$('.feedback-container').hide();
},
error: function(data) {
console.log(data);
}
});
我收到以下错误:
XMLHttpRequest 无法加载 http://waterloo.herokuapp.com/domains/2/comments。请求的资源上不存在“Access-Control-Allow-Origin”标头。 Origin 'http://www.will-wallace.com' 因此不允许访问。
在我的 cmets_controller 中,我有一个 set_headers before_filter,它应该允许来自任何域的帖子(并且在本地工作):
def set_headers
headers['Access-Control-Allow-Origin'] = '*'
headers['Access-Control-Expose-Headers'] = 'Etag'
headers['Access-Control-Allow-Methods'] = 'POST'
headers['Access-Control-Allow-Headers'] = '*, x-requested-with, Content-Type, If- Modified-Since, If-None-Match'
headers['Access-Control-Max-Age'] = '86400'
end
最奇怪的是,当我登录查看我试图发布的反馈时,它实际上成功了。尽管如此,正如我之前提到的,我收到了一个 ajax 错误响应。
我正在测试该小部件的域是 will-wallace.com,如果它有帮助的话,可以实际摆弄它。
最后,如果它有帮助的话,我似乎通过跟踪 heroku 日志得到了 500 错误:
2014-07-10T01:39:59.624512+00:00 heroku[router]: at=info method=POST path="/domains/2/comments" host=waterloo.herokuapp.com fwd="96.255.218.195" dyno=web.1 connect=5ms service=63ms status=500 bytes=1543
【问题讨论】:
标签: javascript jquery ruby-on-rails ajax