试图区分一个糟糕的资源链接和一个来自网站外部的随机坏网址

时间:2010-07-28 09:03:46

标签: ruby-on-rails exception-handling request

我正试图让我的异常通知更聪明一些。目前,如果我有一个错误的资源链接,如文件链接标记中引用的错误名称的javascript文件,它会触发“无路由匹配”错误。如果有人只是输入一些随机网址(例如,在尝试破解网站时),我也会收到“无路由匹配”错误。我试图告诉这两种“无路由匹配”错误之间的区别,所以我可以在第一种情况下发送“发生故障”的电子邮件,并在第二种情况下发送“有人试图破解网站”电子邮件。

我认为我可以通过查看request.referer来做到这一点,认为在我的一个页面有一个指向不存在的文件的链接的情况下,引用者将是我的网站。

这适用于页面链接:即,如果我的某个页面有一个不存在的页面的链接,那么request.referer将作为具有错误链接的页面出现,并且所以我知道这是网站内部的真正错误。但是,对于诸如样式表,javascript文件和图像之类的资源的链接,它会以nil的形式出现,就像有人从站点外部发出一些随机请求一样。所以,我无法区分。

我在开发模式下看到这一点,其中所有文件链接都指向localhost:3000 - 在我的服务器上我使用assets0 - > assets3技巧让浏览器认为它从四个不同的服务器中提取文件。我只是提到这个,以防它变得更复杂。

我怎么能分辨出来?感谢任何建议 - 最多

1 个答案:

答案 0 :(得分:0)

嗯 - 有趣的想法!

一个(相当hacky)选项是在routes.rb的底部有一组catch-alls,用于你知道几乎的路由,例如(注意未经测试):

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

它有点糟糕,但你抓到的任何东西都可以作为其他东西记录下来。