Ruby on rails 修复Rails oauth facebook x-frame-options sameorigin错误
我一辈子都无法让我的Facebook画布应用程序显示出来。Chrome控制台显示此错误,但iframe内部未显示任何内容-为空:Ruby on rails 修复Rails oauth facebook x-frame-options sameorigin错误,ruby-on-rails,facebook,authentication,facebook-oauth,Ruby On Rails,Facebook,Authentication,Facebook Oauth,我一辈子都无法让我的Facebook画布应用程序显示出来。Chrome控制台显示此错误,但iframe内部未显示任何内容-为空: 拒绝显示'http://mysite.dev/'在帧中,因为它将'X-frame-Options'设置为'SAMEORIGIN'。 我正在使用Rails 4.0.0.rc1和omniauth facebook 1.4.1,以下是作为指南。我没有使用任何Javascript代码,因为它是可选的,理想情况下,应用程序只能在Facebook中访问 routes.rb m
拒绝显示'http://mysite.dev/'在帧中,因为它将'X-frame-Options'设置为'SAMEORIGIN'。
我正在使用Rails 4.0.0.rc1和omniauth facebook 1.4.1,以下是作为指南。我没有使用任何Javascript代码,因为它是可选的,理想情况下,应用程序只能在Facebook中访问
routes.rb
match 'auth/:provider/callback', to: 'sessions#create', via: [:get, :post]
match 'auth/failure', to: redirect('/'), via: [:get, :post]
match 'signout', to: 'sessions#destroy', as: 'signout', via: [:get, :post]
class SessionsController < ApplicationController
def create
user = User.from_omniauth(env["omniauth.auth"])
session[:user_id] = user.id
redirect_to root_url
end
def destroy
session[:user_id] = nil
redirect_to root_url
end
会话\u controller.rb
match 'auth/:provider/callback', to: 'sessions#create', via: [:get, :post]
match 'auth/failure', to: redirect('/'), via: [:get, :post]
match 'signout', to: 'sessions#destroy', as: 'signout', via: [:get, :post]
class SessionsController < ApplicationController
def create
user = User.from_omniauth(env["omniauth.auth"])
session[:user_id] = user.id
redirect_to root_url
end
def destroy
session[:user_id] = nil
redirect_to root_url
end
Facebook设置
- 应用程序域:
myapp.dev
- 画布URL:
http://myapp.dev
- 安全画布URL:--空白--如果指定了https,则“我得到”网页不可用
在我开始翻转桌子之前,请帮忙。:) 在Rails 4中,X-FRAME-OPTIONS在标题中设置为SAMEORIGIN,我猜这会阻止它加载到帧中,如中所述。一个人注意到 我通过将以下内容添加到
application.rb
,成功地解决了这个问题:
config.action_dispatch.default_headers[:'X-Frame-Options'] = "ALLOW-FROM https://apps.facebook.com"
我还曾经创建一个域名,允许Facebook访问我的本地开发机器。我在Facebook的canvas
和secure canvas
字段中输入了这个域。强烈推荐
更多信息请点击此处:
'X-Content-Type-Options'=>'nosniff'} 您可以在config/application.rb中配置defaultheaders。 config.action\u dispatch.default\u headers={'Header Name'=> '标题值','X-Frame-Options'=>'拒绝'} 或者你可以移除它们。 config.action\u dispatch.default\u headers.clear
这实际上导致了另一个错误:
加载时遇到无效的“X-Frame-Options”标题'http://myapp.dev/“:”允许从https://www.facebook.com'不是公认的指令。标题将被忽略。
仍在尝试对所有这些内容进行排序。您是否找到了上述注释的解决方案?这确实有效。关键是忽略标题,否则页面为空。最终,我用它让我的应用程序正常工作,我会向任何在当地开发的重视其理智的人推荐。这一直到今天都有效。现在标题是“SAMEORIGIN,ALLOW-FROM”。呃..在进行此更改时,我还得到一个错误,即现在有多个标题:SAMEORIGIN,ALLOW-FROM。下面的答案是:“config.action\u dispatch.default\u headers.clear”修复了这个问题,不过我希望有更好的方法,而不必完全清除它们