2013-03-13 17 views
11

Come posso inviare una richiesta ajax GET su HTTPS?Ajax Richiesta GET su HTTPS

$.get lanci questo:

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

c'è un altro modo o qualche soluzione per ottenere questo lavoro?

Se arrivo all'URL con Chrome sono in grado di ottenere la risposta. Non vedo ragioni per cui non dovrebbe funzionare il lavoro su una richiesta Ajax.

+0

Sembra un problema di origine incrociata, non HTTPS. Qualunque sia il codice che hai usato, dovresti fornirlo con qualche contesto sull'URL in relazione alla pagina/sito in cui è in esecuzione. –

+0

Stai chiamando $ .get con un oggetto con i tuoi dettagli come in http: //api.jquery .com/jQuery.get/o solo da solo? – minikomi

risposta

29

Non è possibile effettuare una richiesta AJAX a una pagina https se si è attualmente in http a causa dello Same Origin Policy.

Il ospitante, porta e schema (protocollo) deve essere la stessa in modo che la richiesta AJAX lavorare.

È possibile assicurarsi che la pagina di origine sia sullo stesso host e lo schema o implementare CORS (cross-origin resource sharing) nel dominio di destinazione per consentire questa particolare richiesta.

0

[jQuery v. 3.3.1]

Ho un'applicazione web, dove tutte le risorse e il traffico sono via HTTPS.

Eppure, ho scoperto che non posso inviare $.ajax() o una qualsiasi delle specifiche $.get, $.post, ecc a causa di (uscita Chrome):

rifiutato di connettersi a 'http://mywebapp/api/mycall' perché viola il seguente contenuto Direttiva sulla politica di sicurezza: "connect-src 'self'".

Era dovuto alla pagina HTTPS che effettua le richieste AJAX tramite HTTP e non ho trovato alcun modo per forzare HTTPS.

Ciò che è pazzo è ciò che lo ha risolto. La chiamata a $.get('/api/mycall/') restituisce l'errore precedente con "Rifiutato di connettersi a" http://mywebapp/api/mycall "", che omette la fine della barra in avanti nella chiamata effettiva nel codice. Quindi dall'errore sembra che la barra in avanti non fosse lì.

Ho effettuato più chiamate e ogni singolo errore quando è presente una barra finale nella chiamata. Gli stessi riescono tutti senza uno.

Quindi chiamare $.ajax({ url: '/api/mycall'}) funziona, mentre $.ajax({ url: '/api/mycall/'}) no.