Что ж, требование настраиваемого заголовка для вызова jsonp сделает вызов jsonp бесполезным для запросов, поступающих из других доменов, поскольку ваши вызывающие абоненты не смогут установить эти заголовки.
Вы можете использовать несколько похожий подход: потребовать маркер CSRF-стиля предотвращения , переданный в качестве параметра в запросе POST. Это потребует от вас предоставления как логики для генерации этих токенов, так и секретного ключа каждому сайту, которому вы хотите разрешить вызывать свою конечную точку. Конечно, если какой-либо из этих ключей был скомпрометирован на стороне удаленного сервера, вы, вероятно, не узнаете об этом, пока не станет слишком поздно.
Если вы хотите отказаться от функциональности для людей с действительно старыми браузерами, вы можете использовать обычный JSON поверх CORS * с префиксом, прерывающим синтаксический анализатор, чтобы предотвратить межсайтовый сценарий включение.
Я предполагаю, что ваши данные не являются чем-то, что вы хотите сделать общедоступным, и в этом случае, надеюсь, вам также потребуется SSL.