我在Facebook(使用Koala gem)工作,最后必须处理更改密码的用户。虽然它可能不是最好的交互,但我的应用程序会捕获身份验证更改并向用户显示单击以重新授权的链接。正确点击链接会点击FB,重定向会传递预期的auth_code。但是,返回为响应FB重定向而传递的页面,其中X-Frame-Options设置为DENY,结果是用户从未看到重新验证结果。
我迷失了为什么X-Frame-Options设置为DENY。
我尝试在Rails(3.2.6)应用程序中将X-Frame-Options设置为SAMEORIGIN,方法是在操作中添加以下行:
response.headers['X-Frame-Options'] = 'SAMEORIGIN'
没有运气。
我也尝试过通过Apache调整响应头。我已经尝试为整个网站设置X-Frame-Header以及定位可能受影响的特定网址。当前配置如下所示(编辑):
<VirtualHost *:443>
ServerName xx.xx.com
DocumentRoot /apps/fb-publisher/current/public
PassengerRuby /home/ubuntu/.rvm/wrappers/ruby-1.9.2-p290@rails3/ruby
... SSL config ...
<Location ~ "/publisher/(revalidate|new)">
Header set X-Frame-Options SAMEORIGIN
</Location>
<Directory /apps/fb-publisher/current/public>
...
</Directory>
</VirtualHost>
我的尝试是强制x-Frame-Options为SAMEORIGIN for xx.xx.com/publisher/new和xx.xx.com/publisher/revalidate。除了当前配置之外,我还尝试了单独的Location和LocationMatch块,这些块定位了各个URL。我也尝试使用Header unset(而不是set)删除X-Frame-Options但是它已被设置。
据我所知,这些是应用程序中的唯一网址,它们将X-Frame-Options标头设置为DENY。
想法?