У меня есть форма, которую я отправляю (через GET, как это требуется) в crm (ViciDial). Я могу успешно отправить форму, однако, если я это сделаю, файл обработки в crm просто отобразит текст успеха, и все.
Вместо этого текста я хочу отобразить страницу с благодарностью на своем веб-сайте, поэтому я решил использовать AJAX для отправки формы и перенаправления ее на нужную мне страницу, однако в моем браузере появляется эта ошибка:
Смешанный контент: страница https://page.com была загружена по HTTPS, но запросила небезопасную конечную точку XMLHttpRequest http://XX.XXX.XX.XXX/vicidial/non_agent_api.php?queries=query=data '. Этот запрос был заблокирован; контент должен обслуживаться по HTTPS.
Это мой сценарий AJAX:
<script>
SubmitFormClickToCall = function(){
jQuery.ajax({
url: "http://XX.XXX.XX.XX/vicidial/non_agent_api.php",
data : jQuery("#form-click-to-call").serialize(),
type : "GET",
processData: false,
contentType: false,
success: function(data){
window.location.href = "https://www.example.com/thank-you";
}
});
}
</script>
Простая установка https в URL-адресе не сработает, есть ли способ отправить данные через GET и перенаправить пользователя на мою страницу благодарности?
============================
Проблема здесь была в смешанном содержимом, это означает, что я загрузил страницу через HTTPS и пытался через AJAX использовать API, который был в HTTP. Но браузер не позволяет нам просто делать это.
Поэтому, если вы не можете настроить API на HTTPS (это был мой случай), мы все равно можем подойти к этому по-другому.
Основная проблема заключалась не в смешанном содержании, а в том, что я хотел отправить данные в API и перенаправить пользователей на красивую страницу с благодарностью. Вместо использования AJAX я создал файл php, который получает данные, отправляет их с помощью curl в API (поскольку это делается на стороне сервера, нет проблем со смешанным содержимым) и перенаправляет моего счастливого пользователя на красивую страницу с благодарностью.
XX.XXX.XX.XX
через HTTP. Однако, если целью HTTP является защита информации пользователя, вам нужно быть осторожным, чтобы маршрут между серверами не проходил через общедоступный Интернет.Ответы:
Если вы загрузите страницу в своем браузере с использованием HTTPS, браузер откажется загружать любые ресурсы по HTTP. Как вы уже пытались, изменение URL-адреса API на HTTPS вместо HTTP обычно решает эту проблему . Однако ваш API не должен разрешать HTTPS-соединения. Из-за этого вы должны либо принудительно использовать HTTP на главной странице, либо запросить разрешение HTTPS-соединений.
Примечание по этому поводу: запрос по-прежнему будет работать, если вы перейдете по URL-адресу API, а не попытаетесь загрузить его с помощью AJAX. Это связано с тем, что браузер не загружает ресурс из защищенной страницы, а загружает небезопасную страницу и принимает это. Однако для того, чтобы он был доступен через AJAX, протоколы должны совпадать.
источник
Я решил это, добавив следующий код на HTML-страницу, поскольку мы используем сторонний API, который не контролируется нами.
Надеюсь, это поможет, и для записи тоже.
источник
http
запросы для использованияhttps
, поэтому вам не нужно менять протокол для каждого вызова.www.example.com/blabla/master.m3u8
. Все отлично работало на http. Но когда мы переводим его на https, это просто не сработает. Мы выяснили, что исходный запросmaster.m3u8
мог выполнитьhttps
, но следующий сегментированный фрагмент видео всегда использовалсяhttp
(потому что мы используем сторонний модуль). Независимо от того, что мы настраиваем, он просто не будет использоватьсяhttps
. Воспользовался этой политикой и сразу сработал как шарм!Если вы просто посещаете веб-страницу, которой доверяете, и хотите быстро двигаться вперед, просто:
1- Щелкните значок щита в правом углу адресной строки.
2- Во всплывающем окне нажмите «Все равно загрузить» или «Загрузить небезопасный скрипт» (в зависимости от версии Chrome).
Если вы хотите настроить браузер Chrome на ВСЕГДА (на всех веб-страницах), разрешать смешанный контент:
1. В открытом браузере Chrome нажмите Ctrl + Shift + Q на клавиатуре, чтобы принудительно закрыть Chrome. Перед выполнением следующих действий необходимо полностью закрыть Chrome.
2- Щелкните правой кнопкой мыши значок Google Chrome на рабочем столе (или ссылку в меню «Пуск»). Выберите Свойства.
3- В конце существующей информации в поле «Цель» добавьте: «--allow-running-insecure-content» (перед первым тире есть пробел).
4- Щелкните ОК.
5- Откройте Chrome и попробуйте запустить ранее заблокированный контент. Теперь он должен работать.
источник
Причина этой ошибки очень проста. Ваш AJAX пытается вызвать через HTTP, тогда как ваш сервер работает через HTTPS, поэтому ваш сервер запрещает вызов вашего AJAX. Это можно исправить, добавив следующую строку в тег заголовка вашего основного HTML-файла:
источник
Если ваш код API работает на сервере node.js, вам нужно сосредоточить свое внимание на нем, а не на Apache или NGINX. Микель прав, изменение URL-адреса API на HTTPS - это ответ, но если ваш API вызывает сервер node.js, его лучше настроить для HTTPS! И, конечно же, сервер node.js может быть на любом неиспользуемом порту, это не обязательно должен быть порт 443.
источник
Вместо использования метода Ajax Post вы можете использовать динамическую форму вместе с element. Он будет работать, даже если страница загружена с использованием SSL, а отправленный источник не является SSL.
Вам необходимо установить значение value элемента формы.
Фактически новая динамическая форма откроется как режим без SSL на отдельной вкладке браузера, если целевой атрибут установлен '_blank'
источник
У меня была такая же проблема, но для меня проблема заключалась в команде ng build. Я делал "ng build --prod", я исправил его на "ng build --prod --base-href / applicationname /". и это решило мою проблему.
источник
в моем случае это был мой локальный хост
http
и моя развернутая версияhttps
, поэтому я использовал этот скрипт, чтобы добавить метатег http-Equiv только для https:источник