我在我的网站上使用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.
答案 0 :(得分:0)
我不确定您是否可以实际更改该网址。
您可以做的是使用localhost:8888
进行本地测试,并创建另一个指向localhost的Facebook应用程序。之后,您可以采用两种方法,以便能够在您的应用中使用这两种(或可能在将来更多)Facebook应用程序。
使用第一种方法,您将不得不以某种方式存储代码中的所有密钥,甚至更糟糕的存储在数据存储区中,然后根据要使用的URL确定。这种方法并不好,而且不能很好地扩展。第二种方法是首选的,因为您不必将密钥存储在代码中,它更安全,并且它可以更好地扩展,因为您不需要预先知道您拥有多少不同的Facebook应用程序。
你可以阅读Nick Johnson's answer如何在Python中解决这个问题,但这个想法是Java,所以它不应该那么难。