2014-09-30 31 views
3

我试图在我的rails应用上使用谷歌字体,但是我在控制台上收到了这条消息,并且字体未加载。请求的资源上不存在“Access-Control-Allow-Origin”标头。谷歌字体

XMLHttpRequest无法加载http://fonts.googleapis.com/css?family=Open+Sans。请求的资源上没有“Access-Control-Allow-Origin”标题。因此不允许访问原产地'https://pre.blabloo.com'。

我在我的localhost:3000上得到了同样的错误。我将下面的代码添加到我的应用程序帮助器中,但仍然收到错误消息。

after_filter :set_access_control_headers 

def set_access_control_headers 
    headers['Access-Control-Allow-Origin'] = '*' 
    headers['Access-Control-Request-Method'] = '*' 
end 

after_filter :set_access_control_headers 

def set_access_control_headers 
    headers['Access-Control-Allow-Origin'] = 'https://pre.blabloo.com' 
    headers['Access-Control-Request-Method'] = '*' 
end 

但没有任何反应

任何帮助,请。

UPDATE


我也试过机架-CORS宝石是这样的:

在我的配置/应用:

config.middleware.insert_before "ActionDispatch::Static", "Rack::Cors" do 
     allow do 
     origins 'http://localhost:3000' 
     resource '*', :headers => :any, :methods => [:get, :post, :options] 
     end 
    end 

但它不工作。现在我又遇到了另一个与YouTube相关的跨平台问题。

+0

你的链接标签看起来像你在哪里包括谷歌字体? – 2014-10-08 15:12:42

+0

你使用nginx吗? – 2014-10-13 06:43:23

回答

0

我无法解决任何'Access-Control-Allow-Origin'配置的问题,所以我决定将字体上传到服务器。

无论如何,感谢您的帮助。

0

我试图重现您的问题,这是为我工作有以下布局和stylesheet_link_tag

<!DOCTYPE html> 
<html> 
<head> 
    <title>SoAccessControl</title> 
    <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true %> 
    <%= stylesheet_link_tag 'application', 'http://fonts.googleapis.com/css?family=Open+Sans' %> 
    <%= javascript_include_tag 'application', 'data-turbolinks-track' => true %> 
    <%= csrf_meta_tags %> 
</head> 
<body> 

<%= yield %> 

</body> 
</html> 

我设置在我的样式表右边font-family和它的工作。之后,我尝试设置标题。这努力:

class ApplicationController < ActionController::Base 
    # Prevent CSRF attacks by raising an exception. 
    # For APIs, you may want to use :null_session instead. 
    protect_from_forgery with: :exception 

    after_filter :set_cors 

    def set_cors 
    headers['Access-Control-Allow-Origin'] = 'https://example.com' 
    headers['Access-Control-Request-Method'] = '*' 
    end 
end 

这里验证: verify

+0

感谢您的回答罗宾。我尝试了你的解决方案,但我的控制台仍然出现以下错误:“XMLHttpRequest无法加载http://fonts.googleapis.com/css?family=Open+Sans。”Access-Control-Allow-Origin'标题为出现在请求的资源上,因此Origin'http:// localhost:3000'不允许访问。“如果我将其上传到我的预生产服务器或者生产服务器,我会得到同样的错误,但是需要更改pre.blabloo.com或www.blabloo.com。你有另一个想法吗?谢谢 – Jean 2014-10-13 08:11:58

+0

不,因为我无法复制你的问题。 – Robin 2014-10-13 15:10:36

1

我想补充像这样到你的application.rb中

config.action_dispatch.default_headers = { 
    'Access-Control-Allow-Origin' => '*', 
    'Access-Control-Request-Method' => %w{GET POST OPTIONS}.join(",") # or whatever else you would like to allow 
} 

为我工作。

+0

对不起,我必须把这个代码放在哪里? – Jean 2014-10-13 08:15:07

+0

进入配置/应用程序。rb – 2014-10-13 20:36:49

+0

:(不起作用,无论如何谢谢 – Jean 2014-10-14 10:03:36

相关问题