Мне часто приходилось использовать сторонние веб-сервисы (API), и, как вы упомянули, JSONP не всегда является вариантом.Вот как я занимаюсь проектированием:
Если API ориентирован на пользователя, он должен предоставлять интерфейс jsonp, и это то, что я буду использовать.Ориентированный на пользователя означает, что вы не можете воспринимать любую причину вызова API, выполнить некоторые вычисления с ответом, можете вызвать одну из ваших служб ajax, а затем объединить ответ и показать пользователю.
Если мой вариант использования включает в себя вызов API и последующую обработку ответа, например, вызов дополнительных служб из моего приложения, объединение данных и последующее их отображение пользователю, я бы предпочел не делать этого в браузере.Я бы вместо этого использовал RestTemplate и выполнял бэкэнд-API-вызовы в сервис.В этом случае нет никаких междоменных ограничений.
Единственный случай, когда использование прокси-сервера сервера для обхода jsonp - это когда вы создаете продукт, который позволяет людям создавать собственные плагины, плагины, которыеразмещены на вашей странице, но необходимо совершать Ajax-вызовы на серверах разработчиков приложений.Это очень сложный случай!(В качестве примера рассмотрим, как Apigee создает Public Facing REST API для существующих URL-адресов или как Zendesk позволяет разрабатывать приложения)
Надеюсь, это поможет.