Получать данные JSON от стороннего производителя и обойти SOP - PullRequest
3 голосов
/ 24 мая 2011

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

Какая моя лучшая ставка здесь?У меня есть проблемы с обоими методами.С промежуточным сервлетом я беспокоюсь о задержке, которая привнесет.С JsonpRequestBuilder похоже, что мне нужно создать полный JavascriptObject для каждого метода, который я буду вызывать с другого сайта, даже если мне нужно извлечь только одно значение из некоторых из этих методов.

Ответы [ 3 ]

2 голосов
/ 25 мая 2011

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

РЕДАКТИРОВАТЬ: Похоже, это то, что делает эта библиотека, извините ... но все же ... это путь:)

1 голос
/ 26 мая 2011

Вам не нужно «создавать полный JavaScriptObject», JavaScriptObject на самом деле является просто средством вызова для JavaScript из мира Java, поэтому вам нужен только один метод получения нужного значенияи он даже может возвращать «вложенное» значение:

public native String getFoo() /*-{
    return this.nested[0].obj.foo;
}-*/;

Будете ли вы использовать JSONP (и JsonpRequestBuilder) или «прокси-сервлет», на самом деле зависит только от возможностей «службы», которая вам нужнадля вызова: JSONP - это JavaScript, а не JSON, поэтому сервер должен возвращать «сценарий ответа JSONP», иначе вы не сможете использовать JsonpRequestBuilder (и, аналогично, вы не сможете (безопасно) использовать CORS илипрокси-сервлет, если сервер возвращает «сценарий JSONP», а не application/json).

1 голос
/ 24 мая 2011

Ознакомьтесь со спецификацией CORS . Мы используем это, чтобы успешно обойти SOP, используя наш собственный сервер с GWT devmode Jetty.

...