Безопасность IE9 HTTPS нарушена моим скриптом Greasemonkey? - PullRequest
16 голосов
/ 11 октября 2010

У меня есть скрипт Greasemonkey-for-IE в IE9, который импортирует jQuery. Но на защищенных страницах это не работает.

Я получаю:

SEC7111: HTTPS security is compromised by http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js

Код, который не работает:

var script = document.createElement("script");
script.setAttribute("src", 
    "http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js");

Как я могу заставить эту работу? Скрипт не вызывает проблем в Firefox.

Ответы [ 5 ]

38 голосов
/ 11 октября 2010

Вы можете устранить проблему с помощью более простого кода, используя URL-адрес схемы, подобный следующему:

var script = document.createElement("script");
script.setAttribute("src", 
   "//ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js");

При этом будет использоваться http:// на странице http:// и https:// на https:// страница ... гораздо более простой способ решения проблемы.

17 голосов
/ 11 октября 2010

Предположительно: используйте https://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js вместо этого (или не доверяйте стороннему CDN (чтобы быть надежным и не скомпрометированным) для ваших защищенных страниц)

5 голосов
/ 11 октября 2010

Сообщение об ошибке - это новый способ предупреждения IE о смешанном контенте (ресурсы HTTP и HTTPS на защищенной странице). Здесь - это сообщение в блоге MSDN.

Использование

https://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.js

, похоже, также работает, хотя я не вижу официальной ссылки на него в Обзор API библиотек.

2 голосов
/ 11 октября 2010

Проблема в том, что когда вы находитесь в безопасном режиме (например, HTTPS), все файлы, загружаемые страницей, также должны быть HTTPS.JQuery включает в себя HTTP.

Вам необходимо определить, находится ли страница в режиме HTTP или HTTPS (используйте window.location.protocol()), и настроить URL-адрес включаемого JQuery в соответствии с требованиями.(все, что нужно, это дополнительные 's' после 'http')

0 голосов
/ 11 октября 2010

вы используете соединение https и хотите получить доступ к соединению http.

...