我收到了无限量的此消息(如循环中),它打破了网站
Rails 4.0.0(使用Turbolinks)
错误消息
阻止访问来源“https://www.facebook.com”的框架 原点为“http://app.herokuapp.com”的框架。请求的框架 访问具有“https”协议,被访问的帧具有 “http”协议。协议必须匹配。
Facebook.js.coffee
fb_root = null
fb_events_bound = false
$ ->
loadFacebookSDK()
bindFacebookEvents() unless fb_events_bound
bindFacebookEvents = ->
$(document)
.on('page:fetch', saveFacebookRoot)
.on('page:change', restoreFacebookRoot)
.on('page:load', ->
FB?.XFBML.parse()
)
fb_events_bound = true
saveFacebookRoot = ->
fb_root = $('#fb-root').detach()
restoreFacebookRoot = ->
if $('#fb-root').length > 0
$('#fb-root').replaceWith fb_root
else
$('body').append fb_root
loadFacebookSDK = ->
window.fbAsyncInit = initializeFacebookSDK
$.getScript("//connect.facebook.net/it_IT/all.js")
initializeFacebookSDK = ->
FB.init
channelUrl : 'http://app.heroku.com/page/fbchannel'
appId : 'MY_ID_HERE'
status : true
cookie : true
xfbml : true
的PageController
class PageController < ApplicationController
skip_before_action :authenticate_user!
def fbchannel
cache_expire = 1.year
response.headers["Pragma"] = "public"
response.headers["Cache-Control"] = "max-age=#{cache_expire.to_i}"
response.headers["Expires"] = (Time.now + cache_expire).strftime("%d %m %Y %H:%I:%S %Z")
render :layout => false, :inline => "<script src='//connect.facebook.net/it_IT/all.js'></script>"
end
end
FBlike (帮助者)
def fblike(resource, layout = 'standard')
content_tag(:div, "", class:"fb-like", data: {
href: polymorphic_url(resource),
width: "225",
show_faces: false,
stream: false,
show_border: false,
header: false,
layout: layout
}
)
end
答案 0 :(得分:0)
相当古老的问题,但它仍然是开放的 - 所以如果你还没有看到这个答案,那么Gemo小姐就是现货。快速仔细检查我的heroku应用程序,验证您实际上只需键入https:而不是http:并且它将自动接受SSL连接 - 无需设置。您唯一需要设置的是在您的Facebook.js.coffee-本节..
initializeFacebookSDK = ->
FB.init
channelUrl : 'http://app.heroku.com/page/fbchannel'
更改为..
initializeFacebookSDK = ->
FB.init
channelUrl : 'https://app.heroku.com/page/fbchannel'
然后,根据您的操作系统(我使用linux),为http://app.heroku
执行快速grep搜索(或搜索目录中文件的文本)并将其更改为https,以确保安全。