Попытка определить разницу между плохой ссылкой на ресурс и случайным плохим URL за пределами сайта - PullRequest
1 голос
/ 28 июля 2010

Я пытаюсь сделать свое уведомление об исключении немного умнее. В настоящее время, если у меня есть неверная ссылка на ресурс, такая как файл javascript с неправильным именем, указанный в теге ссылки на файл, это вызывает ошибку «Нет совпадений маршрута». Я также получаю сообщение об ошибке «Нет совпадений маршрутов», если кто-то просто набирает какой-то случайный URL (например, при попытке взломать сайт). Я пытаюсь определить разницу между этими двумя типами ошибок «нет совпадений маршрутов», поэтому я могу отправить сообщение «что-то сломалось» в первом случае и сообщение «кто-то пытался взломать сайт» во втором случае.

Я подумал, что смогу сделать это, посмотрев на request.referer, думая, что в случае, если на одной из моих страниц есть ссылка на несуществующий файл, что реферер будет моим сайтом.

Это работает для ссылок на страницы: то есть, если на одной из моих страниц есть ссылка на страницу , которая не существует, то request.referer отображается как страница с неверной ссылкой, и поэтому я знаю, что это настоящая ошибка внутри сайта. Но для ссылок на ресурсы, такие как таблицы стилей, файлы javascript и изображения, они равны нулю, так же, как если бы кто-то сделал какой-то случайный запрос из-за пределов сайта. Так что я не могу отличить.

Я вижу это в режиме разработки, где все ссылки на файлы указывают только на localhost: 3000 - на своем сервере я использую трюк assets0 -> assets3, чтобы браузер думал, что он извлекает файлы с четырех разных серверов. Я просто упоминаю об этом на случай, если это усложнит ситуацию.

Как я могу отличить? Благодарен за любой совет - max

1 Ответ

0 голосов
/ 02 августа 2010

Хм - интересная идея!

Один (довольно хакерский) вариант - иметь набор универсальных элементов в нижней части route.rb для известных вам маршрутов почти , например (примечание не проверено):

"/public/javascripts/:scriptname" => :controller => "Application", :action => "broken_script_link"

это немного бред, но все, что вы поймали с этим, было бы зарегистрировано как что-то еще.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...