#apache #.htaccess #ssl #https
Вопрос:
Недавно я изменил свой веб-сайт (общий хостинг) с HTTP на HTTPS. Я могу загрузить веб-страницу, но изображения выдают ошибку 403. Это моя тестовая страница: на https://www.manogat.com/ssltest.html
=====================
<!DOCTYPE html>
<html lang="mr-IN">
<head>
<title>ssl image loading test</title>
</head>
<body>
<div class="header">
<img style="float:left;" src="img/mano_logo.png" alt="" id="logo-image" >
</div>
</body>
</html>
=====================
браузер выдает ошибку 403 для логотипа.png. с этим URL-адресом в console.log https://www.manogat.com/img/mano_logo.png
Если я скопирую и вставлю URL-адрес в отдельное окно или вкладку, изображение загрузится просто отлично.
Что не так после перехода на ssl/https ? Пожалуйста, помогите
Комментарии:
1. Возможно, у вас есть какой-либо контроль доступа на основе HTTP-реферера? И забыл изменить там URL-адрес с HTTP на HTTPS?
2. Я не думаю ни о каком таком контроле доступа. Где мне его искать?
3. Не знаю, где вы настраиваете все остальное? Панель хостинга?
Ответ №1:
Очевидно, что существует какая-то форма контроля доступа, основанная на заголовке Реферера. Это можно легко проверить. С https://...
реферером это дает 403 запрещенных:
$ curl -v -H "Referer: https://www.manogat.com/ssltest.html" https://www.manogat.com/img/mano_logo.png
...
< HTTP/1.1 403 Forbidden
Без заголовка Referer вместо этого он дает 200:
$ curl -v https://www.manogat.com/img/mano_logo.png
...
< HTTP/1.1 200 OK
С a http://
вместо https://
реферера это тоже работает:
$ curl -v -H "Referer: http://www.manogat.com/ssltest.html" https://www.manogat.com/img/mano_logo.png
...
< HTTP/1.1 200 OK
Обратите внимание, что проверка, по-видимому, явно ищет либо пустой заголовок, либо http://www.manogat.com
. Один получает 403, если заголовок Referer установлен на другой HTTP-сайт, например http://example.com
.
Неясно, откуда берется эта проверка, поскольку ничего не известно о хосте, сервере и конфигурации.
Комментарии:
1. хмм. Я вижу, что вы продемонстрировали выше. Однако во втором абзаце вы говорите ….С помощью http:// вместо ссылки https:// это тоже работает: ……..но в примере вы все еще использовали https…… (и это бросило 403)………Я думаю, пример нужно исправить……….С моей стороны, где был бы такой контроль со стороны реферера ?
2. @user1940163: извините, ошибка вырезания и вставки. «. С моей стороны, где был бы такой контроль над реферером» — конфигурация сервера, веб-приложение, возможно, даже какой-то WAF перед ним … — трудно сказать, так как о вашей настройке абсолютно ничего не известно.
3. ДА. Я понял. Я сам взломал файл .htaccess 17 лет назад, и это была одна из начальных строк………… Я добавил ссылку на строку SetEnvIfNoCase «^ ………….com » разрешил=1 разрешить https в ссылках, и это сработало для меня ………..спасибо за руководство.