AJAX между статической веб-страницей и сервером Google App Engine, использующих один и тот же TLD - PullRequest
1 голос
/ 24 августа 2011

У меня есть основной веб-сайт, на котором работает надежный статический хостинг. Которые позволяют мне размещать только статические файлы, такие как html, css, js и т. Д. Теперь у меня есть несколько требований, которые потребуют входа пользователя и хранения данных. Я думаю, что могу справиться с этим с помощью App Engine Python.

Мое приложение похоже на модуль голосования, поэтому я объясню его на примере. Мой план - настроить что-то вроде этого:

main website: www.example.com
appengine:    gae.example.com

На основном веб-сайте, который посещает анонимный пользователь: http://www.example.com/vote.html, он должен видеть текущий статус голосования (который был получен из движка приложения). и кнопка входа (из твиттера / фейсбука). когда он войдет в систему, он сможет отдать свой голос, и голос будет сохранен на сервере appengine.

Я могу справиться с большинством вещей, кроме двух. (с учетом той же политики происхождения).

  • Как сохранить аутентификацию между двумя доменными именами. т.е. www.example.com и gae.example.com.

  • Как сделать HTTP-запрос POST к gae.example.com из www.example.com и использовать возвращенные данные json.

Примечание: я хочу максимально избегать фреймов.

Ответы [ 2 ]

3 голосов
/ 24 августа 2011

Вам необходимо использовать JSONP.

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

См .: Одинаковая политика происхождения - AJAX и использование общедоступных API

0 голосов
/ 24 августа 2011

Вы можете поддерживать вход в систему между двумя поддоменами, убедившись, что cookie для входа в систему установлен в корневом домене с разрешенным доступом к поддоменам.Поддомены смогут получить доступ к файлам cookie корневого домена.См. https://serverfault.com/questions/153409/can-subdomain-example-com-set-a-cookie-that-can-be-read-by-example-com для некоторых примеров.

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

...