Google云端硬盘共享对话错误 - 'X-Frame-Options'为'SAMEORIGIN'

时间:2013-05-20 22:04:02

标签: google-drive-api google-api-js-client

更新:我们找到了一个答案并将其发布在下面,抱歉为这一刻......

在Google Drive Javascript应用中打开“共享”对话框时出现以下错误。

Refused to display 'https://drive.google.com/share?id=..
  in a frame because it set 'X-Frame-Options' to 'SAMEORIGIN'. 

我认为这是因为应用程序的Open URL设置为启动服务器,但我们重定向另一台服务器以实现负载平衡。这里引用了这些要求:Requirements for google drive Share file Dialog

出于性能原因,我们的负载平衡服务器使用不同的第3级域。例如,Drive中的Open URL指向单个服务器:

https://app.domain.com/app

然后,此服务器重定向到以下之一以分发负载:

https://app01.domain.com/app
https://app02.domain.com/app
https://app03.domain.com/app

我们需要分配负载,因为我们的应用程序具有资源密集型的实时后端组件。我希望我们能想出一种更好的方式来跨服务器分发用户,但这是我们能想到的最好的方法。

有人能建议更好的分发方法来保留原产地吗?或者是否有任何可能的方法来规避同一原产地要求。能够在应用程序中使用共享对话框真的很棒。

顺便说一句,Picker对话框工作得很好。但它确实在控制台中抛出错误..

Unable to post message to https://docs.google.com..
  Recipient has origin https://app01.domain.com

1 个答案:

答案 0 :(得分:1)

我们找到了解决方法。我们将所有客户端发送到静态内容的主URL,这从加载角度来看并不是一个大问题。然后我们在多个服务器上分发后端服务。这可能会持续很长时间。

XMLHttpRequest对象要求我们在后端添加一个CORS过滤器,但这很简单,我们可以自己控制它。

很抱歉打扰了..我正在离开问题,以防它有助于澄清别人的问题。我不得不寻找一段时间来找出原因,因为那里有很多不好的建议。