Ajax GET запрос по HTTPS

Как я могу отправить запрос ajax GET через HTTPS?

$.get выдает следующее:

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

Есть ли другой способ или какое-то обходное решение, чтобы заставить это работать?

Если я перейду к URL-адресу с Chrome, я смогу получить ответ. Я не вижу причин, по которым он не должен работать над запросом ajax.

Ответы

Ответ 1

Вы не можете сделать запрос AJAX на страницу https, если вы в настоящее время находитесь в http из-за Политика одинакового происхождения.

хост, порт и схема (протокол) должны быть одинаковыми для того, чтобы запрос AJAX работал.

Вы можете либо удостовериться, что исходная страница находится на том же хосте и схеме, либо реализована CORS (совместное использование ресурсов для разных источников ) в целевом домене, чтобы разрешить этот конкретный запрос.

Ответ 2

[jQuery v. 3.3.1]

У меня есть веб-приложение, где все ресурсы и трафик проходят через HTTPS.

Тем не менее, я обнаружил, что я не могу отправить $.ajax() или любую из конкретных $.get, $.post и т.д. из-за (выход Chrome):

Отказался от подключения к http://mywebapp/api/mycall ', поскольку он нарушает следующую директиву политики безопасности содержимого: "connect-src" self".

Это было связано с тем, что страница HTTPS обрабатывала запросы AJAX через HTTP, и я не нашел способа заставить HTTPS.

Что сумасшедшее - это то, что исправлено. Вызов $.get('/api/mycall/') выводит указанную выше ошибку с помощью "Отказано, чтобы подключиться к http://mywebapp/api/mycall '", что не позволяет завершить косую черту в действительном вызовите код. Таким образом, из-за ошибки это выглядит так, как будто косой черты не было.

Я совершил несколько вызовов, и каждый из них терпит неудачу, когда в вызываемом URL-адресе заканчивается косая черта. Те же самые успевают без успеха.

Так что вызов $.ajax({ url: '/api/mycall'}) работает, а $.ajax({ url: '/api/mycall/'}) не работает.