Ошибка диалогового окна общего доступа к Google Диску — «X-Frame-Options» на «SAMEORIGIN»

ОБНОВЛЕНИЕ: мы нашли ответ на этот вопрос и разместили его ниже, извините за момент...

Я получаю следующую ошибку при открытии диалогового окна «Поделиться» в приложении Javascript для Google Диска.

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

Я думаю, это потому, что URL-адрес открытия для приложения установлен на сервер запуска, но затем мы перенаправляем другой сервер для целей балансировки нагрузки. Требования указаны здесь: Требования к диалоговому окну общего доступа к файлу на диске Google.

Из соображений производительности наши серверы балансировки нагрузки используют другой домен 3-го уровня. Так, например, 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

person djabraham    schedule 20.05.2013    source источник


Ответы (1)


Мы нашли обходной путь. Мы отправляем всех клиентов на основной URL-адрес для статического контента, что не так важно с точки зрения загрузки. Затем мы распределили серверные службы по нескольким серверам. Это может работать какое-то время.

Объект XMLHttpRequest требовал, чтобы мы добавили фильтр CORS в серверную часть, но это было легко, и мы можем управлять им сами.

Извините за беспокойство. Я оставляю вопрос на случай, если это поможет прояснить проблему для других. Пришлось поискать какое-то время, чтобы выяснить причину, потому что там много плохих советов.

person djabraham    schedule 20.05.2013