jQuery cross domaine POST shenanigans
Je suis en train de s'authentifier à un API, qui permet uniquement de vous authentifier à l'aide d'un POST avec JSON comme des données de formulaire, dans le format {"nom":"myusername","mot de passe":"monmotdepasse"}.
J'ai essayé pendant deux jours pour le faire fonctionner avec jQuery, mais je suis en cours d'exécution dans des problèmes parce que c'est la croix de domaine. Comment puis-je y arriver?
Message d'erreur:
Request Method:OPTIONS
Status Code:405 METHOD NOT ALLOWED
Code jusqu'à présent:
var username = "myusername";
var password = "mypass"
var authurl = "https://myurl";
$.ajax
({
type: "POST",
url: authurl,
dataType: 'json',
contentType: "application/json; charset=utf-8",
async: false,
data: {'json':'{"username":"' + username + '", "password":"' + password + '"}'},
success: function (result) {
$('#json').html(result);
}
})
Pour résumer:
- API accepte uniquement POST pour auth
- Json API nécessite que les données de formulaire, par exemple: {"nom":"myusername","mot de passe":"monmotdepasse"}
- Le js est exécuté à partir d'un domaine différent, causant de la croix-des erreurs de domaine
Votre aide est très apprécié 🙂
source d'informationauteur FLX | 2011-07-20
Vous devez vous connecter pour publier un commentaire.
Vous devez suivre un modèle différent. Votre local JS va faire une requête ajax post vers une URL locale qui accepte la méthode POST avec vos données json.
À ce point votre code serveur va faire un HTTP POST avec les propres données vers le serveur distant, obtenir la réponse, et de l'envoyer à l'appel de la js.
Le problème est que le domaine que vous essayez de publier pour ne pas répondre à la demande d'OPTIONS qui est envoyé avant chaque demande de domaines. Avec les OPTIONS de requête, le navigateur reçoit l'information à propos de la croix-des règles de domaine, etc. Pour permettre à la croix-demande de domaine, le serveur doit mettre en
Access-Control-Allow-Origin:*
(ou le domaine du script, en fait, mais * couvre tout) et peut-êtreAccess-Control-Allow-Methods: GET, POST, OPTIONS
en-têtes.J'ai un hébergement mutualisé sur GoDaddy. J'ai besoin d'une réponse à cette question, trop, et après une recherche, j'ai trouvé que c'est possible.
J'ai écrit un .fichier htaccess, le mettre dans le même dossier que ma page action. Voici le contenu de la .htaccess:
Voici mon appel ajax:
Voir cet article de référence:
L'en-tête set Access-Control-Allow-Origin .htaccess ne fonctionne pas
De croix domaine des trucs utiliser JSONP (recherche de crossDomain)
http://www.ibm.com/developerworks/library/wa-aj-jsonp1/