Как заставить загружать динамический, небезопасный контент в Chrome?
Я использую Jira в https, и у меня есть некоторые настройки, которые я хотел бы сделать с помощью дополнительного JS. Мой JS размещен на небезопасном сервере (нет доступных https).
Когда я динамически загружаю небезопасный JS файл, вставляя его в DOM (используя расширение браузера), Chrome сообщает мне:
[заблокировано] Страница https://jiraserver/browse
запускает небезопасное содержимое с http://myserver/jira.js
.
Я вижу, как это очень безопасно и все, но мне все равно. Я хочу загрузить этот незащищенный JS файл. Как я могу сказать, что Chrome доверяет мне и просто делает то, что я говорю?
Мой метод вставки (в расширительном коде):
document.body.appendChild((function(s){s.src='http://myserver/jira.js';return s;})(document.createElement('script')));
Ответы
Ответ 1
В соответствии с этой поддержкой Chrome Q & A вы можете запустить свой Chrome со следующим флагом командной строки, чтобы предотвратить проверку Chrome для небезопасного контента:
--allow-running-insecure-content
Вот некоторая документация о том, как запускать Chrome с флагами команд
Ответ 2
Chrome просто не загрузит небезопасный script на защищенной странице.
Должен ли загружаться ваш jira.js с сервера? Лучший способ вставить его на страницу - это включить его в свой комплект расширения.
var s = document.createElement('script');
s.src = chrome.extension.getURL("jira.js");
s.onload = function() {
this.parentNode.removeChild(this);
};
(document.head||document.documentElement).appendChild(s);
Если вы должны загрузить его с сервера, я полагаю, ваше расширение может сделать запрос XHR для script, а затем ввести ответ на страницу.
// make a XHR request, then...
var s = document.createElement('script');
s.textContent = codeFromXHR;
(document.head||document.documentElement).appendChild(s);
s.parentNode.removeChild(s);
Ответ 3
У меня была та же проблема:
Наш клиент связывает файл CSS и js файл, размещенный на нашем сервере, в домене, который не является безопасным.
Мы разрешим его, используя Amazon CloudFront. Они сервер HTTPS, используя свои сертификаты, которые проверяются.
Это не плохое решение для использования, поскольку CDN часто является хорошей идеей, и эти ресурсы несколько статичны. (Файл CSS настроен для каждого клиента и фактически сгенерирован, но может быть настроен нормальный TTL, и CDN сбрасывается, если требуется).
Обратите внимание, что решение CDN может быть даже более доступным, чем покупка в зависимости от вашей загрузки.
Ответ 4
Я столкнулся с той же проблемой и обнаружил, что если мы вошли в нашу учетную запись google в Chrome, Chrome перестанет загружать небезопасный контент в https.
Если мы используем окно инкогнито для загрузки веб-сайта с ненадежным контентом, он будет работать.