使用跨域XMLHttpRequest的Rails POST



我已经安装了Rails v4.0.2应用程序,并托管在Heroku上。我暂时禁用了CSRF Authentity Token检查,以允许从外部源POST JSON数据。当我在Chrome中使用Advanced REST Client扩展进行POST时,它工作正常并创建新记录。然而,当尝试使用ajax调用在JavaScript中创建完全相同的POST时,我收到了以下错误:

选项http://herokudomain.com/users.json404(未找到)

选项http://herokudomain.com/users.json请求的资源上不存在"Access Control Allow Origin"标头。原点'http://requestdomain.com因此不允许访问。

XMLHttpRequest无法加载http://herokudomain.com/users.json.请求的资源上不存在"Access Control Allow Origin"标头。原点'http://requestdomain.com因此不允许访问。

我特别不理解404错误,因为我肯定使用了正确的URL,尽管我在这里更改了它以进行演示。如果我将错误消息中的URL复制到浏览器中,我会被带到所需的页面,而不是404。

有人能告诉我在JavaScript中使用高级REST客户端和使用XMLHttpRequest有什么区别吗?以及我如何解决这个问题?

编辑:

以下是我的测试页面的代码,我已经尝试通过localhost和托管域运行该页面:http://pastebin.com/z3hJEX8c

在应用程序控制器中添加这些行将允许跨域请求,但为了安全起见,您可以定义域

before_filter :allow_ajax_request_from_other_domains
def allow_ajax_request_from_other_domains
headers['Access-Control-Allow-Origin'] = '*'
headers['Access-Control-Request-Method'] = '*'
headers['Access-Control-Allow-Headers'] = '*'
end

最新更新