Существуют некоторые сценарии, которые я использую только через ajax, и я не хочу, чтобы пользователь запустил эти скрипты непосредственно от браузера. Я использую jQuery для совершения всех ajax звонков, и я сохраняю все свои ajax файлы в папке названными ajax.
Так, я надеялся создать htaccess файл, который проверяет на запрос ajax (HTTP_X_REQUESTED_WITH), и отклоните все другие просьбы в той папке. (Я знаю, что http заголовок может фальсифицироваться, но я не могу думать о лучшем решении). Я попробовал это:
% ReWriteCond {HTTP_X_REQUESTED_WITH} ^ $
% ReWriteCond {SERVER_URL} ^/ajax/.php$
ReWriteRule ^.* $ - [F]
Но, это не работает. Что я делаю неправильно? Есть ли любой другой способ достигнуть подобных результатов. (Я не хочу проверять на заголовок в каждом сценарии).
Просто проверьте if ($ _ SERVER ['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest') {
в начале документа, если он не установлен, то ничего не возвращайте.
править Вот почему: http://github.com/jquery/jquery/blob/master/src/ajax.js#L370
редактировать 2
Плохо, просто прочтите свой пост еще раз. В качестве альтернативы вы можете сделать папку недоступной для Интернета, а затем просто иметь стандартный файл ajax.php с include ('./ private / scripts.php')
, так как ваш сервер все равно будет иметь к нему доступ , но никто не сможет просматривать их из своего браузера.