Pourquoi suis-je obtenir une demande d'OPTIONS au lieu d'une requête GET?
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.js" type="text/javascript"></script>
<script>
$.get("http://example.com/", function(data) {
alert(data);
});
</script>
il ne fait pas de demande d'OPTIONS pour que l'URL et puis le callback n'est appelé avec quoi que ce soit.
Quand il n'est pas de la croix de domaine, il fonctionne très bien.
Ne devrait pas jQuery viens de faire l'appel avec un <script>
nœud, puis faire le rappel lors de son chargement? Je comprends que je ne vais pas être en mesure d'obtenir le résultat (puisque c'est la croix de domaine), mais c'est OK, je veux juste l'appel à aller de travers. Est-ce un bug, ou suis-je en train de faire quelque chose de mal?
- Pourrait être cos de la croix de domaine. E. g si vous êtes sur votre fichier: File://PATH_TO_WEBSITE au lieu d'utiliser localhost/WEBSITE_LINK
InformationsquelleAutor Paul Tarjan | 2009-08-10
Vous devez vous connecter pour publier un commentaire.
Selon MDN,
PUT
,DELETE
). La SCRO est conçu pour empêcher l'attaque indirecte à l'égard de votre serveur à l'aide de navigateurs des visiteurs sur certains site 3ème partie.OPTIONS est de http://www.w3.org/TR/cors/ Voir http://metajack.im/2010/01/19/crossdomain-ajax-for-xmpp-http-binding-made-easy/ pour un peu plus d'info
Si vous essayez de POST
Assurez-vous de
JSON.stringify
vos données de formulaire et de l'envoyer en tant quetext/plain
.Je ne crois pas que jQuery va naturellement faire un JSONP demande lors d'une URL comme ça. Il sera, cependant, faire une requête JSONP lorsque vous lui dites de quel argument utiliser pour un rappel:
Il est tout à fait à la réception de script pour faire usage de cet argument (qui n'ont pas à être appelé "jsoncallback"), donc dans ce cas, la fonction ne sera jamais appelé. Mais, puisque vous avez déclaré que vous voulez juste le script à metaward.com pour l'exécuter, que ferait-il.
En fait, la croix-domaine AJAX (XMLHttp) les demandes ne sont pas autorisés pour des raisons de sécurité (pensez à récupérer un "restreinte" de la page web côté client, et de l'envoyer au serveur ce serait un problème de sécurité).
La seule solution de contournement sont des rappels. Il s'agit de: la création d'un nouveau script de l'objet et de pointage de la src à la fin de JavaScript côté, qui est un rappel avec JSON valeurs (myFunction({données}), myFunction est une fonction qui fait quelque chose avec les données (par exemple, le stocker dans une variable).
Il suffit de changer le "application/json" à "text/plain" et n'oubliez pas le JSON.stringify(demande):
J'ai eu le même problème. Ma solution était d'ajouter des en-têtes de mon script PHP qui sont présents uniquement en environnement de dev.
Cela permet des requêtes inter-domaine:
Cela indique que la demande de contrôle en amont qu'il est OK pour le client d'envoyer les en-têtes qu'il veut:
De cette façon, il n'est pas nécessaire de modifier la demande.
Si vous avez des données sensibles dans votre dev base de données qui pourrait potentiellement être une fuite, alors vous pourriez penser à deux fois à ce sujet.
Il est à la recherche comme Firefox et Opera (testé sur mac ainsi) n'aime pas la croix domainness de cette (mais Safari est bien avec elle).
Vous pourriez avoir à appeler un serveur local de code côté de roulage de la télécommande page.
Dans mon cas, la question n'était pas liée à la SCRO depuis que j'ai été la délivrance d'un jQuery POST pour le même serveur web. Les données JSON, mais j'avais omis le dataType: 'json' paramètre.
Je n'ai pas (je n'ai d'ajouter) un contentType paramètre comme le montre David Lopes réponse ci-dessus.
J'ai été en mesure de le réparer avec l'aide d'en-têtes suivants
Si vous êtes sur Nodejs, voici le code que vous pouvez copier/coller.