当前位置: 首页 > 面试题库 >

如何在Rails 4 App中启用CORS

熊俊人
2023-03-14
问题内容

我将要拔头发了……从早上开始,我一直在尝试在此Rails应用程序中启用CORS,但这根本行不通。我试过这个,使用 机架一个Cors宝石,这个答案)与此职位均无功而返。

有人可以指出我正确的方向吗?

这是我的js:

      var req = new XMLHttpRequest();

      if ('withCredentials' in req) {
            // req.open('GET', "https://api.github.com/users/mralexgray/repos", true);
            req.open('GET', "http://www.postcoder.lc/postcodes/" + value, true);
            // Just like regular ol' XHR
            req.onreadystatechange = function() {
                if (req.readyState === 4) {
                    if (req.status >= 200 && req.status < 400) {
                        // JSON.parse(req.responseText) etc.
                        console.log(req.responseText);
                    } else {
                        // Handle error case
                    }
                }
            };
            req.send();
        }

当我尝试此URL(从外部客户端)时:https :
//api.github.com/users/mralexgray/repos可以正常工作,我假设问题出在我的Rails
API。我错了吗?

编辑:当前我在我的控制器中:

skip_before_filter :verify_authenticity_token
before_filter :cors_preflight_check
after_filter :cors_set_access_control_headers

# For all responses in this controller, return the CORS access control headers.
def cors_set_access_control_headers
  headers['Access-Control-Allow-Origin'] = '*'
  headers['Access-Control-Allow-Methods'] = 'POST, GET, OPTIONS'
  headers['Access-Control-Max-Age'] = "1728000"
end

# If this is a preflight OPTIONS request, then short-circuit the
# request, return only the necessary headers and return an empty
# text/plain.

def cors_preflight_check
  headers['Access-Control-Allow-Origin'] = '*'
  headers['Access-Control-Allow-Methods'] = 'POST, GET, OPTIONS'
  headers['Access-Control-Allow-Headers'] = 'X-Requested-With, X-Prototype-Version'
  headers['Access-Control-Max-Age'] = '1728000'
end

问题答案:

您应该使用机架cors

它提供了一个不错的DSL,可用于config/application.rb,而不是凌乱的标头工作以及过滤器之前的工作。

允许的情况如下,但是,当然,您必须对其进行一些调整。

use Rack::Cors do
  allow do
    origins '*'
    resource '*', headers: :any, methods: :any
  end  
end


 类似资料:
  • 问题内容: 我使用Flickr照片搜索API的JavaScript创建了一个演示。现在,我将其转换为AngularJs。我在互联网上搜索,发现下面的配置。 组态: 服务: 控制器: 问题答案: 你不知道 您请求的服务器必须实现CORS才能从您的网站访问权限中授予JavaScript。您的JavaScript无法授予自己访问其他网站的权限。

  • 问题内容: 我正在尝试使用jquery提出跨源请求,但它一直被消息拒绝 XMLHttpRequest无法加载http:// …请求的资源上不存在“ Access-Control-Allow-Origin”标头。因此,不能访问Origin…。 我正在使用flask,heroku和jquery 客户端代码如下所示: 在heroku方面,我正在使用flask,就像这样 问题答案: 当我部署到Heroku

  • 我已经使用JavaScript为Flickr照片搜索API创建了一个演示。现在我把它转换成AngularJs。我在网上搜索了一下,找到了下面的配置。 配置: 服务: 控制器: 但是我仍然得到了同样的错误。以下是我尝试过的一些链接: XMLHttpRequest无法加载URL。访问控制不允许原点允许原点 http://goo.gl/JuS5B1

  • 问题内容: 我正在尝试使用一些跨域的Web服务。当我停用chrome的网络安全功能时,它的运行状况良好。我希望它在没有此功能的情况下工作,因此我尝试添加cross- domain.xml,但仍然无法正常工作。当我进行更多搜索时,开始了解有关tomcat中启用CORS的信息。 来自 http://www.w3.org/wiki/CORS_Enabled 对于Apache,可以将Apache配置为使用

  • 问题内容: 尝试执行以下行时,仅显示最后两个语句(“ Here is some ERROR”和“ Here is some FATAL”),并且不显示前三个语句。我刚刚开始学习此主题,任何人都可以告诉为什么会这样呢? log4j.property有 问题答案: 您可能在项目中的某个地方有一个log4j.properties文件。在该文件中,您可以配置所需的调试输出级别。请参阅以下示例: 第一行将根

  • 问题内容: 标题说说我的问题。我需要将DTO包装到javascript方法回调中。目前,我应要求返回JSON。但是在Ajax中使用此问题,因为我将GET发送到其他域。当然还有治安警察。 我有创建附加提供的想法。有任何示例,链接或建议如何执行。 问题答案: RESTEasy中没有明确支持JSONP,但是在应用程序中启用JSONP的一种简单方法是编写Servlet过滤器。 这里有一些链接可以帮助您编写

  • 问题内容: 当我在MySQL中执行查询时,它返回一条错误消息,说明未启用InnoDB。当我单击存储引擎时,InnoDB被禁用。 如何启用InnoDB? 问题答案: 您需要在文件中启用它,然后重新启动服务器: http://dev.mysql.com/doc/refman/5.1/zh-CN/innodb- parameters.html#option_mysqld_innodb 或者,您可以在运行

  • 问题内容: 如何在xampp中启用curl? 我的PHP Twitter应用程序需要curl函数。但是未在XAMPP中启用它。如何启用它。我没有选择这样做的选择。 问题答案: 您必须修改xampp文件夹中的php.ini文件。需要更改三个不同位置的三个文件。 请按照以下步骤在Windows中使用XAMPP启用curl库: 步骤1: 浏览并打开以下3个文件 第2步: 通过删除分号(;)取消注释php