jquery $.ajax en-têtes http personnalisés problème
Je suis interrogation RESTE un webservice qui utilise des en-têtes http personnalisés pour l'authentification.
Si j'effectue un POST sans les en-têtes que j'obtiens l'erreur, mais quand j'ajoute les en-têtes j'ai une erreur 404 au lieu de ce que j'ai réellement besoin.
C'est mon code
$.ajax({
type: 'POST',
url: 'http://server.com/service',
beforeSend: function (xhr) { xhr.setRequestHeader('CUSTOM-HEADER-KEY', 'CUSTOM-HEADER-VALUE') },
success: function(data) {
alert('success.');
}
});
Voici le pyromane en-têtes de sortie:
OPTIONS /service HTTP/1.1
Hôte: server.com
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:8.0.1) Gecko/20100101 Firefox/8.0.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip, deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Connection: keep-alive
Origine: null
Contrôle d'accès-Demande-Méthode: POST
De Contrôle d'accès-Request-Headers: en-tête personnalisé-clés
Pragma: no-cache
Cache-Control: no-cache
et le smae en-têtes lors de l'exécution de la poste avec des affiches, qui retourne le résultat souhaité.
POST /service HTTP/1.1
Hôte: server.com
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:8.0.1) Gecko/20100101 Firefox/8.0.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip, deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Connection: keep-alive
EN-TÊTE PERSONNALISÉ-CLÉS: EN-TÊTE PERSONNALISÉ-VALEUR
Pragma: no-cache
Cache-Control: no-cache
Content-Length: 0
La différence est assez évident, mais je ne sais pas ce que je fais de mal dans le code jquery.
Quelqu'un pourrait-il m'aider s'il vous plaît?
POST
demande sur les serveurs?Blender est sur la bonne voie. C'est le plus probable d'un sandbox de violation. Soit d'accéder au service VIA jsonp ou de l'utilisation de votre serveur proxy pour le service.
"et le smae en-têtes lors de l'exécution de la poste avec l'affiche".. qu'est-ce que "POSTER" ?
OriginalL'auteur Mariano | 2011-12-16
Vous devez vous connecter pour publier un commentaire.
Dans une croix de domaine demande si l'en-tête n'est pas autorisé par le service du navigateur sera tout simplement le supprimer
Au premier navigateur navigateur va faire une OPTION d'achat à vérifier pour le permis (à l'Origine, en-Têtes, Méthodes)
Dans la configuration de votre service, vous devez autoriser l'en-tête afin d'être en mesure de l'envoyer au serveur à l'aide de
OriginalL'auteur Amr Monjid
C'est une Croix de domaine demande. Si vous ne pouvez pas vous résoudre à partir du navigateur de côté. Vous pourriez avoir besoin d'un Serveur Proxy Côté d'effectuer un POST à un autre domaine.
OriginalL'auteur elmasse
Cela peut ou peut ne pas aider, mais je pense que vous pouvez ajouter des en-têtes dans l'option data:
OriginalL'auteur orolo
Toutes les en-têtes personnalisés sur la croix domaine des appels déclenche un pré-vol à la demande, qui est un appel OPTIONS. Vous avez besoin de contourner le contrôle de sécurité pour les OPTIONS d'appels ou de gérer les demandes séparément puisque les en-têtes personnalisés ne sont pas transmises avec la demande OPTIONS. Aussi il n'y a pas de mal en permettant de pré-vol à la demande, car aucun de données est transmis au navigateur avec cet appel. Fondamentalement, le navigateur demande au serveur si il est permis de faire cet appel avant de réellement faire. Vous pourriez avoir besoin de vérifier votre Contrôle d'Accès des en-têtes de trop. Tous ces changements sont sur le côté serveur btw si vous avez besoin d'avoir le plein contrôle sur le webservice.
Je l'ai dit, vos en-têtes personnalisés ne sont PAS envoyés à la demande OPTIONS. Il s'agit d'une simple demande s'il est autorisé à le faire en POST, PUT, etc sur ce chemin. Et non, il n'existe aucune solution de contournement pour tout ajout d'en-têtes personnalisés pour les OPTIONS, les appels, les navigateurs ne permettent pas permettre cela comme une mesure de sécurité. Vous pouvez toujours utiliser JSONP aller autour de la SCRO limitations, mais vous aurez à utiliser la requête params pour transmettre des données sur le serveur car il est juste un < script > GET
OriginalL'auteur Yigit Erol