У меня есть ASP.NET Webservice и работает с использованием атрибута [ScriptService]. Из того, что я прочитал из этой статьи:
http://weblogs.asp.net/scottgu/archive/2007/04/04/json-hijacking-and-how-asp-net-ajax-1-0-mitigates-these-attacks.aspx
ASP.NET по умолчанию не разрешает запросы JSONP (внедренные в DOM для отклонения кросс-доменных запросов. Это делается путем принятия 2 мер:
1) принимать только запросы POST (инъекция скрипта через GET всегда выполняется)
2) запретить соединения, отправляющие заголовок HTTP типа содержимого, отличного от «Content-type: application / json» (который браузеры не будут отправлять).
Я знаком с междоменными проблемами и знаю, что такое JSONP, и я полностью понимаю, почему ASP.NET по умолчанию ограничен таким образом.
Но теперь у меня есть свой веб-сервис, который является общедоступным и должен быть открыт для всех. Поэтому мне явно необходимо включить междоменные запросы через Javascript к моему веб-сервису, чтобы внешние веб-сайты могли получать данные через мой веб-сервис из jquery и т. П.
Я уже рассмотрел шаг (1), чтобы разрешить запросы через GET, изменив атрибут ScriptMethod следующим образом: [ScriptMethod (UseHttpGet = true)]. Я проверил с помощью jQuery, GET-запросы теперь работают (на одном домене). Но как добраться до точки (2)?
Я знаю о заголовках Allow-Origin- *, которые поддерживаются некоторыми браузерами, но на самом деле это еще не стандарт, и я не хочу заставлять своих пользователей / клиентов изменять свои заголовки HTTP для использования моего веб-сервиса.
Подводя итог: мне нужна хорошая практика для включения междоменных запросов для ScriptingService для общедоступных веб-сервисов через JSON. Я имею в виду, что ДОЛЖЕН быть способ сделать общедоступным веб-сервис, то есть то, чем занимается большинство веб-сервисов?