CORS с jQuery и XDomainRequest в IE8 / 9
обновление: я настоятельно рекомендую не инвестировать какое-либо время в XDomainRequest, потому что это ужасно плохая реализация со многими ограничениями. Это в основном работает только для запросов GET на серверы без ssl, поэтому вы можете также использовать jsonp или что-то еще.
Я использую CORS для вызова кросс-доменного API, однако Internet Explorer дает проблемы. CORS должен быть возможен в IE8 и IE9 через
3 ответа:
метод POST поддерживается, и чтобы сделать междоменный https:// запрос, ваша вызывающая страница также должна быть загружена по https. Это лучшая статья, которую я нашел, которая подробно объясняет эти и другие ограничения XDomainRequest:
Я написал прокси, который будет изящно понижаться до проксирования, если используется IE9 или меньше. Вам не нужно менять свой код вообще, если вы используете ASP.NET.
решение состоит из двух частей. Первый-это скрипт jquery, который подключается к обработке jQuery ajax. Он автоматически вызовет веб-сервер, если запрос crossDomain сделан и браузер IE:
$.ajaxPrefilter(function (options, originalOptions, jqXhr) { if (!window.CorsProxyUrl) { window.CorsProxyUrl = '/corsproxy/'; } // only proxy those requests // that are marked as crossDomain requests. if (!options.crossDomain) { return; } if (getIeVersion() && getIeVersion() < 10) { var url = options.url; options.beforeSend = function (request) { request.setRequestHeader("X-CorsProxy-Url", url); }; options.url = window.CorsProxyUrl; options.crossDomain = false; } });
на вашем веб-сервере вы должны получить запрос, получить значение от
X-CorsProxy-Url
HTTP-заголовок и выполните HTTP-запрос и, наконец, верните результат.мой пост в блоге: http://blog.gauffin.org/2014/04/how-to-use-cors-requests-in-internet-explorer-9-and-below/
на CORS запросы в IE8 / 9 вы можете использовать плагин jQuery jquery-transport-xdr