Пишу расширение для хрома на JS. Один из скриптов запрашивает картинки с одного домена, но защита JS выдает "No 'Access-Control-Allow-Origin'". Выход один - запрашивать со своего сайта и добавлять заголовок.
Идея следующая:
JS обращается к моему сайту:
"
https://img.site.ru/images/user/avatar.gif" или "
https://img.site.ru/items/item.png", сайт проверяет наличие изображений, при отсутствии создает папки, загружает и сохраняет изображения, затем возвращает изображение с заголовком 'Access-Control-Allow-Origin'
Можно ли через .htaccess проверить существование папок и файла, и при отсутствии, перенаправить на "
https://img.site.ru/index.php?request='images/user...'", а лучше "
https://img.site.ru/?request='images/user/avatar.gif'",
но что бы при обращении к "
https://img.site.ru" выводилось index.php
В index.php будет обрабатываться $_GET["request"], создаваться папки и сохраняться изображения, для меньшей нагрузки на сайт, для которого пишу расширение.
Логика примерно следующая
spoiler
Точный синтаксис php не знаю, поэтому напишу как бы я сделал на JS:
if(!$_GET["request"] || typeof $_GET["request"] !== 'string') {
// перенаправляем на https://img.site.ru
} else {
GetImg('images/img.png') // условное значение $_GET["request"]
function GetImg(req){
let path = req.split('/')
let folder = ''
for(let i = 0; i < path.length; i++){
folder += '/' + path[i]
if(!file_exists(folder)) { // проверка на существование папки / файла
CreateFolder(folder, req)
return
} else {
// выдать уже загруженное изображение
}
}
}
}
function CreateFolder(folder, req){
if(folder.split('.').length == 2 && folder == ('/'+req)){ // если нужные папки уже создались, но картинка не нашлась и folder == '/images/img.png'
ImgDownloader(req)
return
} else {
// создать папку
}
GetImg(req)
}
function ImgDownloader(req){
// загружаем картинку с другого домена (есть ли promise в php?)
GetImg(req)
}
В PHP я полный ноль. Думаю ничего сложного в обработке таких запросов, но всё же попрошу следующих советов:
1. Есть ли лучшие идеи, чем мои? Я понимаю, что можно напрямую делать запрос к '/?request=''" и не заморачиваться с .htaccess, но такой вариант не красив.
2. Как лучше всего обработать ошибку и сделать перенаправление при ненужном или неправильном запросе?
3. Как обеспечить безопасность субдомена?