Думаю, ни для кого не секрет, что разработчики браузеров стараются сделать серфинг в интернете максимально безопасным. Цель, конечно, прекрасная, но достигается она обычно за счет введения различного рода ограничений, которые усложняют жизнь не только мошенникам. Приведу небольшой пример. Недавно я рассказывал об использовании Яндекс. Карт и сервиса IPLoc. Для получения данных от IPLoc пришлось использовать PHP, хотя, как совершенно справедливо заметил Big_Shark, было бы гораздо удобнее отправить этот запрос с помощью JavaScript. Но кросс-доменный JavaScript запрещен политиками безопасности браузеров. Тем не менее, мне стало интересно, можно ли обойти это ограничения без использования серверных скриптов (PHP). И решение, конечно, нашлось Правда, оно имеет свои недостатки, но об этом чуть ниже. Примечание. По каким-то причинам сервис IPLoc на момент написания этой статьи недоступен. Но есть альтернативные варианты – например, WIPmania. com (), который имеет очень похожий API. Для начала рассмотрим, как происходит обработка запроса и формирование страницы с использованием PHP. Как видите, серверный скрипт должен отправить запрос сервису WIPmania, получить от него ответ, сформировать страницу и вернуть её браузеру.
Гораздо интереснее было бы отправить AJAX запрос сервису WIPmania и показать его ответ на странице. При этом необходимость в использовании PHP отпала бы. Но, как я уже говорил, AJAX запрос может быть отправлен только тому серверу, с которого был загружен скрипт. Т. к. изменить поведение браузера мы не можем, то нужно, чтобы наш сервер перенаправил запрос на нужный ресурс (в данном примере WIPmania). Если в качестве web сервера используется Apache, то для решения этой задачи можно использовать mod_proxy. Из названия можно догадаться, что этот модуль позволяет использовать Apache в качестве прокси сервера. Сразу хочу обратить ваше внимание на возможную угрозу безопасности. Нужно максимально ограничить возможность использования прокси. Например, в данном случае, можно разрешить доступ через него только к одному сайту – WIPmania. На следующей диаграмме показан порядок обработки запросов в этом случае. Как видите, в этом случае ajax запрос отправляется браузером web серверу, который получает необходимые данные от WIPmania. Теперь посмотрим как это реализовать. 1) Включаем mod_proxy. Для этого в конфиге apache (httpd. conf) удаляем комментарии перед строками. LoadModule proxy_module modules/mod_proxy. so LoadModule proxy_http_module modules/mod_proxy_http. so 2) Сразу же запрещаем использовать apache в качестве обычного прокси сервера (forward proxy). ProxyRequests Off Вообще-то эта опция включена по-умолчанию, но перестраховка не повредит. 3) Указываем куда нужно отправить запрос. Допустим, нам нужно, чтобы в ответ на все запросы вида http://simplecoding.
org/wipmania… сервер возвращал соответствующий ответ от сервиса WIPmania. Создаем в корне сайта файл. htaccess со следующим содержимым.