Le problème est que IE9 et ci-dessous ne prennent pas en charge de la SCRO. XDomainRequest ne faire que du soutien GET/POST et l' text/plain
contenu-type décrit ici: http://blogs.msdn.com/b/ieinternals/archive/2010/05/13/xdomainrequest-restrictions-limitations-and-workarounds.aspx
Donc, si vous voulez l'utiliser tous les verbes HTTP et/ou json etc, vous devez utiliser une autre solution. J'ai écrit un proxy qui va normalement revenir à l'utilisation de proxy si IE9 ou moins est utilisé. Vous n'avez pas à modifier votre code à tous, si vous êtes en utilisant ASP.NET.
La solution est en deux parties. Le premier est un script jquery qui se raccorde à l'ajax de jQuery traitement. Il appelle automatiquement le serveur si un crossDomain demande est faite et que le navigateur est 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;
}
});
Dans votre serveur web, vous devez en avoir reçu la demande, obtenir la valeur de la X-CorsProxy-Url-tête http et de faire une requête HTTP et enfin retourner le résultat.
Mon blog: http://blog.gauffin.org/2014/04/how-to-use-cors-requests-in-internet-explorer-9-and-below/