【问题标题】:Facebook Application: Block direct access from domainFacebook 应用程序:阻止来自域的直接访问
【发布时间】:2012-03-26 20:54:34
【问题描述】:

我有一个 facebook 应用程序,它可以在 facebook 上运行或直接在域上运行。

但我不想要它。

www.mydomain.com/myapp // 这不应该工作。

你应该去:

apps.facebook.com/myapp

抱歉英语不好。

谁能帮帮我,我会很高兴的。

【问题讨论】:

标签: php facebook facebook-apps


【解决方案1】:

根据 url 重定向到您希望用户去的地方:

if ($_SERVER["SERVER_NAME"] != "apps.facebook.com")
{
header('Location: http://apps.facebook.com/myapp');   
}

如果你只想要你的 domain.com 和 apps.facebook.com

if ($_SERVER["SERVER_NAME"] != "apps.facebook.com" && $_SERVER["SERVER_NAME"] != "mydomain.com" )
{
header('Location: http://apps.facebook.com/myapp');   
}

或通过文件夹中的 .htaccess

RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.mydomain.com$[OR]
RewriteCond %{HTTP_HOST} ^mydomain.com$
RewriteRule ^(.*)$ http://apps.facebook.com/myapp/$1 [R=301,L]

或简单地放在您的 php 页面顶部

if ($_SERVER["SERVER_NAME"] != "apps.facebook.com")
{
echo "Error please visit my apps via facebook";
return   
}

【讨论】:

  • 当用户访问 myapp/x.php 时会有更多类似apps.facebook.com/myapp/x,y,z.php 的页面会发生什么?
  • 如果有人访问 mydomain.com/myapp,我不希望他访问应用程序。重定向或显示错误(你需要先去 facebook)我怎么能这样做。
  • 使用 .htaccess 来保护所有文件夹
  • 他的 $_SERVER['SERVER_NAME'] 不会是 apps.facebook.com,除非他在 Facebook 自己的服务器上(即从不)。
  • 你在说什么ceejayoz?服务器名称是域,是的,它正在工作
【解决方案2】:

由于Same-Origin Policy,没有一个检查apps.facebook.com 框架的好方法。我建议你只用这样的方式检测你是否在 javascript 中的框架中:

if(window == window.top) window.top.location='http://apps.facebook.com/whatever/';

它不会阻止其他人对您进行 iframe,但至少您的域会将您重定向到 Facebook 页面。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多