2013-03-13 30 views
11

Jak wysłać żądanie ajax GET przez HTTPS?Żądanie Ajax GET za pośrednictwem protokołu HTTPS

$.get rzuca to:

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

Czy istnieje jakiś inny sposób lub obejście, aby dostać tę pracę?

Jeśli przejdę do adresu URL z Chrome, jestem w stanie uzyskać odpowiedź. Nie widzę powodu, dla którego nie powinien on działać na żądanie ajax.

+0

To wygląda na problem przekroju pochodzenia nie HTTPS. . Bez względu na kod, który został użyty, należy podać, że z pewnym kontekście na URL w stosunku do strony/witryny jest uruchomiony w –

+0

dzwonisz $ .get z obiektem ze swoimi szczegółami jak w http: //api.jquery .com/jQuery.get/lub samo w sobie? – minikomi

Odpowiedz

29

Nie można przesłać żądania AJAX do strony https, jeśli aktualnie jesteś w http z powodu Same Origin Policy.

Gospodarz , port i schemat (protokół) musi być taka sama, w celu żądania AJAX do pracy.

Możesz upewnić się, że strona początkowa znajduje się na tym samym hoście i schemacie lub implementować CORS (cross-origin resource sharing) w domenie docelowej, aby umożliwić to konkretne żądanie.

0

[jQuery v. 3.3.1]

Mam aplikację internetową, na której wszystkie zasoby i ruchu są za pośrednictwem protokołu HTTPS.

Jednak stwierdziliśmy, że nie mogę wysłać $.ajax() ani żadnego specyficznego $.get, $.post itd powodu (wyjście Chrome):

Odmówił połączyć „http://mywebapp/api/mycall”, ponieważ narusza następującej treści Dyrektywa dotycząca bezpieczeństwa: "connect-src" self "".

To było spowodowane strony HTTPS dokonującej żądań AJAX za pośrednictwem protokołu HTTP i znalazłem w żaden sposób zmusić HTTPS.

Co jest szalony jest to, co stałe. Wywołanie $.get('/api/mycall/') powoduje wyświetlenie powyższego błędu za pomocą "Odmowa połączenia z" http://mywebapp/api/mycall "", która pomija końcowy ukośnik w faktycznym wywołaniu w kodzie. Tak więc z powodu błędu wygląda na to, że nie było ukośnika.

Zrobiłem kilka połączeń i każdy jeden z nich zawiedzie, gdy istnieje kończący ukośnik w url miano. Te same wszystkie odnoszą sukces bez jednego.

Więc wywołanie $.ajax({ url: '/api/mycall'}) prace, podczas gdy $.ajax({ url: '/api/mycall/'}) nie.

Powiązane problemy