web-dev-qa-db-fra.com

Demande Ajax GET via HTTPS

Comment puis-je envoyer un ajaxOBTENIRune requête surHTTPS?

$.get jette ceci:

XMLHttpRequest cannot load https://********. Origin null is not allowed by Access-Control-Allow-Origin. 

Existe-t-il un autre moyen ou une solution de contournement pour que cela fonctionne? 

Si je navigue vers l'URL avec Chrome , je peux obtenir la réponse. Je ne vois aucune raison pour laquelle cela ne fonctionnerait pas avec une requête ajax.

11
jviotti

Vous ne pouvez pas envoyer de demande AJAX à une page https si vous êtes actuellement dans http en raison de la politique de même origine .

Les protocoles Host, port et scheme doivent être identiques pour que la demande AJAX fonctionne.

Vous pouvez vous assurer que la page d'origine se trouve sur le même hôte et le même schéma ou implémenter CORS (partage de ressources cross-origin) sur le domaine cible pour autoriser cette demande particulière. 

31
Andrew Moore

[jQuery v. 3.3.1]

J'ai une application Web où toutes les ressources et le trafic se font via HTTPS.

Cependant, j'ai constaté que je ne pouvais pas envoyer de $.ajax() ni aucun des $.get, $.post, etc. en raison de (sortie de Chrome):

Refusé de se connecter à ' http: // mywebapp/api/mycall ' car il enfreint la directive suivante sur la politique de sécurité du contenu: "connect-src 'self'".

C'était à cause de la page HTTPS qui faisait les requêtes AJAX via HTTP et je n'ai trouvé aucun moyen de forcer HTTPS.

Ce qui est fou, c'est ce qui l'a réglé. L'appel de $.get('/api/mycall/') génère l'erreur ci-dessus avec "Refuse de se connecter à ' http: // mywebapp/api/mycall '", qui omet la barre oblique de fin dans l'appel réel dans le code. Donc, de l'erreur, il semble que la barre oblique ne soit pas là.

J'ai fait plusieurs appels et chacun échoue lorsqu'il y a une barre oblique de fin dans l'URL appelée. Les mêmes réussissent tous sans un.

Donc, appeler $.ajax({ url: '/api/mycall'}) fonctionne, alors que $.ajax({ url: '/api/mycall/'}) ne fonctionne pas.

0
Dimitar Nikovski