0

我在我的网站上使用 facebook 登录。当我在本地测试时,我需要使用local.mysite.com,所以 facebook 认为请求来自我的网站。这很好用,除非我将图像上传到 blobstore。上传图片时,应用引擎总是切换到localhost:888. 这使浏览器认为跨站点脚本正在发生并阻止我的上传。如何强制应用引擎使用local.mysite.com而不是localhost:888

这是我得到的错误:

XMLHttpRequest cannot load http://localhost:8888/_ah/upload/agpidWJwcm9qZWN0chsLEhVfX0Jsb2JVcGxvYWRTZXNzaW9uX18YBQw. Origin http://local.mysite.com:8888 is not allowed by Access-Control-Allow-Origin. 
4

1 回答 1

0

我不确定您是否可以实际更改该 URL。

您可以做的是将localhost:8888用于本地测试并创建另一个指向 localhost 的 Facebook 应用程序。之后,您可以使用两种方法来在您的应用程序中使用这两个(或者将来可能更多)Facebook 应用程序。

  • 您可以根据请求的 URL 决定使用哪个密钥
  • 将所有密钥存储在某种配置 Datatstore 中,只有管理员可以更改它们

使用第一种方法,您必须以某种方式将所有密钥存储在您的代码中,或者更糟的是存储在数据存储中,然后根据 URL 决定使用哪个。这种方法不好,也不能很好地扩展。第二种方法更可取,因为您不必将密钥存储在代码中,它更安全,并且扩展性更好,因为您不需要预先知道您拥有多少不同的 Facebook 应用程序。

您可以阅读Nick Johnson 的关于如何在 Python 中解决该问题的答案,但这个想法是 Java,所以它不应该那么难。

于 2013-04-25T06:48:31.003 回答