2013-04-25 81 views
0

我在我的網站上使用Facebook登錄。當我在本地測試時,我需要使用local.mysite.com,所以facebook認爲請求來自我的網站。除了將圖片上傳到Blobstore時,此功能非常有用。上傳圖片時,應用引擎始終切換爲localhost:888。這使得瀏覽器認爲跨站點腳本正在發生並阻止我上傳。我如何可以強制應用程序引擎使用local.mysite.com代替localhost:888本地blobstore響應的強制URL

這是我收到的錯誤:

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

回答

0

我不知道你實際上可以改變URL。

你可以做的是使用localhost:8888進行本地測試,並創建另一個指向本地主機的Facebook應用程序。之後有兩種方法可以在您的應用程序中使用這兩種(或者將來可能更多)Facebook應用程序。

  • 可以決定基於請求的URL鍵使用
  • 存放在somekind的配置中所有的功能按鍵Datatstore只有管理員可以改變他們

隨着你將不得不存儲第一種方法以某種方式代碼中的所有關鍵字,或者更糟糕的是在數據存儲區中,然後根據URL來決定使用哪一個。這種方法不好,它不能很好地擴展。第二種方法更可取,因爲您不必將密鑰存儲在代碼中,它更安全,而且擴展性更好,因爲您無需知道您擁有多少個不同的Facebook應用程序。

你可以閱讀Nick Johnson's answer關於如何在Python中解決這個問題,但這個想法是Java,所以它不應該那麼難。

+0

我有使用本地主機作爲facebook域的問題。 Facebook認爲我們正在嘗試加載Facebook資源並阻止很多操作。 – Lumpy 2013-04-25 18:26:38

+0

@Lumpy奇怪..我從來沒有任何問題在Facebook上添加http:// localhost:8080能夠在本地測試我的登錄。也許他們最近改變了一些東西。無論是哪種情況,將配置屬性存儲在數據存儲區而不是代碼中是一個好主意。 – Lipis 2013-04-25 18:30:41