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/'})
не работает.