Inter-Domaine AJAX ne pas envoyer de X-requested-with-tête
Créer un service web sur http://www.a.com/service.asmx et envoyer un cross-domain requête ajax à partir de http://www.b.com. Vérifier les en-têtes dans Firebug, ou dans Live HTTP Headers, ou tout autre plugin que vous souhaitez.
Il n'y a aucune trace de la X-requested-with HTTP champ d'en-Tête entre les en-têtes de requête.
Toutefois, si vous envoyez une requête ajax pour le même service à partir du même domaine (disons, par exemple, http://www.a.com/about), vous verrez que le champ d'en-tête.
Pourquoi le X-requested-with champ d'en-tête omis pour la croix-domaine de requêtes ajax?
Mise à jour: je sais que JSONP les appels ne sont pas des appels AJAX dans la nature. Ainsi, vous ne verrez pas de X-requested-with champ d'en-tête, en JSONP appels.
Vous devez vous connecter pour publier un commentaire.
Si vous utilisez jQuery pour faire de votre requête ajax, il ne sera pas envoyer l'en-tête X-requested-with (HTTP_X_REQUESTED_WITH) = XMLHttpRequest, parce que c'est la croix de domaine. Mais il y a 2 façons de résoudre ce problème et d'envoyer l'en-tête:
Option 1) définir Manuellement l'en-tête dans l'appel ajax:
Option 2) Dire jQuery de ne pas utiliser la croix de domaine par défaut, de sorte qu'il sera de garder la X-requested-with en-tête de la requête ajax:
Mais dans ce cas, le serveur doit permettre à ceux d'en-têtes, puis le serveur doit imprimer ces en-têtes:
La première ligne ci-dessus permettra d'éviter l'erreur "Origine n'est pas autorisée par Access-Control-Allow-Origin."
La deuxième ligne sera d'éviter l'erreur "Demande de champ d'en-tête X-requested-with n'est pas autorisé par Access-Control-Allow-en-Têtes."