【发布时间】:2014-09-22 14:49:41
【问题描述】:
因此,在 StackOverflow 上存在一些解决此错误的问题,但在我检查的 10-15 个问题中,我找不到确切问题的解决方案。
我正在远程服务器上运行 Angular 应用程序(端口 9000)和 Rails 应用程序(端口 3000)。 Angular 应用通过 post 请求向 Rails 应用发送请求。
发出请求时,Javascript 控制台会显示以下错误消息:
XMLHttpRequest cannot load http://0.0.0.0:3000/api/query. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://10.241.16.159:9000' is therefore not allowed access.
根据我的阅读,我需要更改我的 Rails 应用程序的一些内容,以便它可以接受来自其他服务器的连接(这似乎很奇怪,因为两个应用程序都在同一个 ec2 实例上运行)。
我尝试添加类似的行
skip_before_filter :verify_authenticity_token
到我在rails中的控制器,但这似乎没有效果。
我该如何解决这个错误?
【问题讨论】:
-
它们都在同一个 EC2 实例上并不重要。它们在不同的端口上,CORS 专门针对被命中的 URL,由于它们都在不同的端口上,它们是不同的 url 试试这个:leopard.in.ua/2012/07/08/using-cors-with-rails
-
有没有办法让我的 Rails 服务器接受所有 CORS 请求,即使是以牺牲一些安全性为代价?
-
不确定如何在 Rails 中执行此操作,但是当我在 PHP 上遇到这个问题时,我不得不在我的 php 文件中添加一些标题行:
header('Access-Control-Allow-Origin: *'); header('Access-Control-Allow-Methods: GET, POST, OPTIONS'); header('Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept'); -
你试过这个
headers['Access-Control-Allow-Origin'] = request.headers["HTTP_ORIGIN"] -
我应该在哪里包含该代码,hex494D49?
标签: javascript ruby-on-rails angularjs