getXDM или JSONP, какой использовать, чтобы обойти ту же политику происхождения - PullRequest
1 голос
/ 05 февраля 2011

Я создаю виджет JavaScript, который получает около 4-6 КБ данных от службы WCF, размещенной мной, и использует тег canvas (HTML5) для рисования некоторых диаграмм. Я хочу, чтобы кто-нибудь смог встроить этот виджет на свои сайты, скопировав некоторые HTML и JavaScript, которыми я поделился.

Теперь проблема: та же политика происхождения, она не разрешает какой-либо запрос XHR из домена хоста виджета службе WCF в моем домене, что означает, что любой, использующий виджет, не может получить данные из моей службы WCF (каждый запрос получит около 4-6КБ данных в ответ).

Я прошел предыдущие обсуждения на этом сайте и нашел следующие возможные решения:

  1. JSONP (может использоваться с моей службой WCF)
  2. Скрытые Ифрамы (невозможно, так как я не контролирую оба домена)
  3. window.postMessage (не уверен, что библиотеки JavaScript могут заставить его работать в старых браузерах, т.е. IE6)
  4. Обмен ресурсами между источниками (CORS) (невозможно, так как я хочу использовать старые браузеры, например IE6)
  5. Метод обратного прокси (невозможно, так как я не контролирую сервер веб-сайта пользователя)
  6. easyXDM (может быть возможным решением, но нужно изучить, как использовать его с моей службой WCF)

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

Во-вторых, я знаю, что Facebook, Twitter, Google все они делятся своими приложениями (именно так, как я хочу поделиться) и преодолели эту проблему, чтобы сделать это. Может кто-нибудь указать мне направление, в котором я мог бы найти больше о том, как они решили эту проблему.

1 Ответ

0 голосов
/ 05 февраля 2011

Это то, что вам нужно судить, основываясь на

  • Насколько велик размер вашего виджета, включая библиотеки.
  • Как часто вам нужно будет опрашивать службу,или одноразовое событие.
  • Насколько важна для вас полная совместимость с браузером.

Для описанного вами конкретного случая использования я бы порекомендовал JSONP.Он будет держать виджет очень маленьким, является хорошим кросс-браузерным решением и может справиться со скромными требованиями к данным.

Google и т. Д. Используют решения типа "кометы", в которых между клиентом и сервером сохраняется поток в виде сокета.Это не должно использоваться для виджетов, так как это приведет к увеличению ресурсов браузера.

...