4

我收到了无限量的此消息(如在循环中)和它打破了网站阻止源自“https://www.facebook.com”的框架访问源自“http://myapp.herokuapp.com”的框架

滑轨4.0.0(与Turbolinks)访问 与原籍 “http://app.herokuapp.com” 帧冻结与原籍 “https://www.facebook.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 
+2

您的频道网址必须与Facebook使用的协议相同:您是否尝试过使用https:// app.heroku.com/page/fbchannel作为您的channelUrl? – CamilleLDN

回答

0

很老的问题,但它仍然是开放的 - 所以如果你还没有看到这个答案,小姐极客是现货。对我的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,以确保安全。

相关问题