загрузка CSS или JavaScript из не публичного каталога - PullRequest
1 голос
/ 28 мая 2010

Есть ли способ загрузить файлы CSS и / или JavaScript из-за пределов общедоступного веб-каталога?

например, на моем хостинге у меня есть / public_html, но я не хочу, чтобы эти файлы существовали в общедоступном каталоге, и я хочу, чтобы они находились в каталоге за пределами общедоступного каталога в каталоге / system одного уровня (я использую codeigniter) в пределах / system / application / view /

Ответы [ 4 ]

3 голосов
/ 28 мая 2010

В конечном итоге, Javascript и Stylesheets обрабатываются на стороне клиента. По этой причине не существует решения, которое действительно скрывало бы ваш javascript или CSS от общественности.

Одним из возможных решений является загрузка требуемого файла CSS / Javascript через PHP с использованием чего-то вроде file_get_contents (), а затем вывод его непосредственно на страницу с использованием встроенных стилей / сценариев.

Это не решит проблему скрытия кода / стилей от общественности. Это дало бы вам возможность фильтровать весь код и стили с помощью какого-либо упаковщика или запутывания, хотя нет никаких причин, по которым вы не могли бы сделать это со своими статическими файлами (и при гораздо меньших затратах на обработку)

1 голос
/ 28 мая 2010

Не без публичного прокси.

Вам потребуется file_get_contents() или include их, а затем отправить их на свою страницу.

Нельзя просто сделать ../../system и подняться выше ДОКРУТА.

Они должны обрабатываться браузером, поэтому им необходимо , чтобы быть доступными.

Если вы хотите помешать людям просматривать ваш источник в удобочитаемой форме, посмотрите CSS minify и JS packer . Это, конечно, только запутывает код. Любой желающий сможет прочитать ваш JavaScript и посмотреть, что он делает.

Почему вы не хотите, чтобы люди читали ваш CSS или JavaScript?

1 голос
/ 28 мая 2010

Да - в некотором смысле - и Minify [http://code.google.com/p/minify/] - это один из подходов.

Посмотрите на строку 39 конфигурационного файла [http://code.google.com/p/minify/source/browse/trunk/min/config.php]. Здесь вы увидите, где ваш минимизированный кеш находится вне веб-корня. Теперь я не знаю, могут ли исходные файлы JS и CSS находиться в той же директории, что и кеш.

0 голосов
/ 04 июня 2010

Я знаю, что вы имеете в виду twmulloy, кажется непоследовательным «просматривать» связанную информацию в разных местах. Однако учтите, что файлы JS и CSS - это ресурсы, которые поддерживают представления, а не части самого представления.

Тем не менее, вы можете достичь того, чего хотите, несколькими способами. Можно написать контроллер, который принимает запросы на ваши активы JS / CSS и выводит заголовок и данные из соответствующего места (файл представления, база данных, где угодно на самом деле). Тем не менее, это неэффективно по сравнению с тем, чтобы просто принять «неопрятность» выталкивания файлов в подпапке корневого уровня public_html. Я, как и многие вышеупомянутые комментаторы, считаю, что это лучшее решение для его скорости и целесообразности; просто каталог 'assets' на том же уровне, что и системный, с изображениями, css, js и т. д. внутри. Вы можете использовать псевдоним или виртуальную папку, чтобы вам было легче ...

Однако есть и третий способ. Существуют библиотеки, которые делают то, что вам нужно, просто так, как вы хотите, с дополнительным преимуществом Minify (из принятого ответа) и сжатия, или как вам угодно. Две известные мне библиотеки называются AssetLibPro и Carabiner, и они позволяют вам указать путь к активу (по вашему желанию), а затем вы загружаете свои файлы JS и CSS (с группами, например, screen, распечатывайте при необходимости). Затем они обслуживают все связанные CSS / JS и т. Д. Как один файл; сжатый, сжатый, кэшированный ... все, что вам нужно.

...