#css #wordpress #fonts #https #mixed-content
#css #wordpress #шрифты #https #смешанный контент
Вопрос:
Существует тема WordPress, которая автоматически выбирает выбранный шрифт и запрашивает его у Google font. когда для нескольких выбранных страниц потребовался ssl, шрифт стал missing
Просмотр журнала консоли:
[заблокировано] Страница в ‘https://www.example.com /‘ был загружен по протоколу HTTPS, но запускал небезопасный контент из ‘http://fonts.googleapis.com/css?family=Alegreya Sans:300 ,400,500, 700, 800‘: это содержимое также должно быть загружено по протоколу HTTPS.
будет ли работать переход в код и выполнение всех запросов по протоколу https от Google font? Есть ли какой-либо обходной путь для этого?
найден исходный код… но, похоже, это уже делается … может ли быть ошибка в логике if?
$prefix = "http";
if(isset($_SERVER['HTTPS']) amp;amp; $_SERVER['HTTPS'] == 'on') $prefix = "https";
if($get_google_font){
if(!in_array($rule_split[0], $this->used_fonts))
{
$this->extra_output .= "n<!-- google webfont font replacement -->n";
$this->extra_output .= '<link id="google_webfont_'.$this->webfont_count.'" rel="stylesheet" type="text/css" href="'.$prefix.'s://fonts.googleapis.com/css?family='.str_replace(' ',' ',$rule_split[0]).$font_weight.'" />';
}
Ответ №1:
Отредактируйте свою тему, заменив все вхождения http://fonts.googleapis.com/...
на https://fonts.googleapis.com/...
(обратите внимание на s).
Ресурсы, которые могут представлять угрозу безопасности (такие как скрипты и шрифты), должны загружаться через защищенное соединение при запросе в контексте защищенной страницы по очевидной причине: ими могли манипулировать по пути.
Комментарии:
1. Да, возможно обратное (загрузка ресурсов через TLS / SSL на незащищенную страницу).
2. Хорошо, просто нужно подтвердить, тогда я перейду к коду. спасибо ~
3. есть идеи по поводу кода, который я опубликовал? кажется, он уже делает это, но оператор if кажется ложным даже на https
4. Вы оставили ложную
s://
в<link ...
строке. В любом случае, вам это не нужно, просто используйте относительные URI протокола , и все готово.5. Три года спустя ситуация изменилась. В настоящее время не рекомендуется использовать URI, относящиеся к протоколу, учитывая, что безопасные соединения проще настраивать и они очень дешевые, если не почти бесплатные, для многих распространенных целей. Если вы можете обслуживать через
https
, то, во что бы то ни стало, сделайте это.
Ответ №2:
Используйте относительные URIпротокола
Просто используйте //
префикс. ( instead of http[s]://
)
- На странице https будет загружена защищенная версия.
- На обычной http-странице будет загружена обычная http-версия.
Отредактируйте свою тему, заменив каждое появление http://fonts.googleapis.com/...
на //fonts.googleapis.com/...
Ответ №3:
позвольте браузеру справиться со всем, просто удалите «http» из вашей ссылки.
аналогично вы должны поступить и с другими библиотеками, если вы столкнулись с такой же проблемой с ними, например
https://fonts.googleapis.com/css?family=Open Sans:700,600,800,400
Для
//fonts.googleapis.com/css?family=Open Sans:700,600,800,400
то же самое для
http://maxcdn.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css
Для
//maxcdn.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css
Ответ №4:
Я столкнулся с этой проблемой, когда вы используете ссылки Google cdn, которые недоступны (например, страна, подобная Китаю), попробуйте использовать локальные файлы вместо cdn
Комментарии:
1. Мне интересно, есть ли способ использовать оба … то есть скрипт, который использует ссылку Google, но если он не работает, то полагайтесь на локальные файлы для того же шрифта.