Перехватывать и использовать локальные файлы в http-запросах

Я пытаюсь найти инструмент, который позволит не-программистам тестировать файлы на реальном сервере.

Например, они могут модифицировать изображение на своем компьютере, перезагрузить веб-страницу, а затем сразу увидеть результаты их работы.

Я пробовал найти инструмент для этого, потому что кажется очевидным, что кто-то должен был подумать об этом, но много программного обеспечения, которое я вижу, не совсем подходит. Инструмент под названием Fiddler делает это (они называют это автоответчиком), но он только для Windows. Я могу изменить файл hosts, чтобы перенаправить на локальный экземпляр nginx или что-то в этом роде, но это кажется сложным для поддержания, когда все, что я действительно хочу, это простой инструмент, который будет что-то вроде этого...

http://someserver.com/css/ (. *) → /home/user/localcss/$1

Есть ли у кого-нибудь рекомендации?

Изменить: переопределение перенаправления

Ответы

Ответ 1

Fiddler имеет эту функцию; просто перейдите на вкладку "Автоответчик" и сопоставьте URL-адреса локальным файлам. Тысячи людей делают это каждый день.

Смотрите также видео # 5 здесь: http://www.fiddlerbook.com/fiddler/help/video/default.asp

Ответ 3

Решение Max PAC было спасателем жизни, поэтому я предоставляю более подробную информацию (пока не могу голосовать)

Чтобы использовать локальную версию, скажем, css файлов, создайте файл "proxy.pac", который содержит эту функцию:

function FindProxyForURL(url, host)
{
    // use regex to match requests ending with '.css'
    // and redirect them to localhost
    var regexpr = /.**\.css/;
    if(regexpr.test(url))
    {
        return "PROXY localhost";
    }

    // Or else connect directly:
    return "DIRECT";
}

Сохраните 'proxy.pac' и укажите ваш браузер в этот файл. В Firefox это в меню "Параметры" > "Дополнительно" > "Соединение" > "Настройки" > "URL-адрес автоматической настройки прокси"

Для лучшей практики также добавьте MIME-тип на свой веб-сервер: map '.pac' для ввода 'application/x-ns-proxy-autoconfig'.

Все запросы к файлам .css теперь будут перенаправлены на localhost. Не забудьте убедиться, что структура файла на прокси-сервере одинакова.

В случае CSS, возможно, будет проще переопределить CSS, используя локальный хром. Например, в Firefox, chrome/userContent.css. См. http://kb.mozillazine.org/UserContent.css

Ответ 4

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

Файлы PAC поддерживаются всеми основными браузерами и позволяют писать script, которые могут перенаправлять любой отдельный запрос на прокси-сервер, Так, например, прокси-сервер может обслуживать файл PAC, перенаправлять URL-адреса с правами доступа PAC на прокси-сервер и возвращать локальные версии этих файлов. Он может даже поддерживать HTTPS.

Остерегайтесь одной ошибки - Internet Explorer. Он помогает "неправильно кэшировать" результаты этого script, так что если один URL-адрес домена проксирован, все URL-адреса в этом домене будут проксированы. Однако эту функцию можно отключить.

Ответ 5

На самом деле вы не можете этого сделать, потому что браузеры не разрешают файлы через http://получать доступ к файлу на локальной машине (подумайте об этом мгновенно... Что произойдет, если, например, вредоносная веб-страница загружает некоторые личные файлы с вашего компьютера?).
Некоторые браузеры (например, Safari) позволяют файлы через файл://обращаться к другому файлу://файлы, другие - нет, но ни один браузер не позволяет http://обращаться к файлу://.

В Firefox есть функция под названием "Signed scripts", которая представляет собой скрипты с цифровой подписью с доверенным сертификатом. Они могут попросить пользователя предоставить им доступ к локальному жесткому диску. Посмотрите на это: http://www.mozilla.org/projects/security/components/signed-scripts.html

Вы имеете в виду веб-прокси Fiddler (www.fiddler2.com)? Существует коммерческая Java-альтернатива с именем Charles Web Proxy, которая может соответствовать вашим потребностям.