更新:我们找到了一个答案并将其发布在下面,抱歉为这一刻......
在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
答案 0 :(得分:1)
我们找到了解决方法。我们将所有客户端发送到静态内容的主URL,这从加载角度来看并不是一个大问题。然后我们在多个服务器上分发后端服务。这可能会持续很长时间。
XMLHttpRequest对象要求我们在后端添加一个CORS过滤器,但这很简单,我们可以自己控制它。
很抱歉打扰了..我正在离开问题,以防它有助于澄清别人的问题。我不得不寻找一段时间来找出原因,因为那里有很多不好的建议。