强制本地blobstore响应的URL

时间:2013-04-25 00:54:46

标签: java google-app-engine

我在我的网站上使用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. 

1 个答案:

答案 0 :(得分:0)

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

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

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

使用第一种方法,您将不得不以某种方式存储代码中的所有密钥,甚至更糟糕的存储在数据存储区中,然后根据要使用的URL确定。这种方法并不好,而且不能很好地扩展。第二种方法是首选的,因为您不必将密钥存储在代码中,它更安全,并且它可以更好地扩展,因为您不需要预先知道您拥有多少不同的Facebook应用程序。

你可以阅读Nick Johnson's answer如何在Python中解决这个问题,但这个想法是Java,所以它不应该那么难。