ruby-on-rails - 防止 html 请求的子域访问

标签 ruby-on-rails ruby-on-rails-3 routes

我有一个子域 widgets.mywebsite.com。子域唯一做的就是在给定路由上返回 json。如何防止人们/爬虫通过子域访问我的网站,同时仍然保持路由可用?我很乐意将包含此子域的任何请求重定向到 mywebsite.com,但不知道如何操作。

constraints :subdomain => 'widgets' do
  namespace :widgets, :path => nil, :format => 'json' do
    match 'v1' => 'v1/widgets#index'
  end
end

最佳答案

所以听起来您想要反转路由中的逻辑 - 您想要限制大部分路由,以便它们仅在子域不等于小部件时解析。这与上面的示例相反,在上面的示例中,您要使单个路由仅在“widgets”子域上可用。这非常简单。

在您的 config/routes.rb 中,您可以在 Application.routes.draw block 之前定义一个类

class NotWidgetsRequest
  def matches?(request)
    request.subdomain != 'widgets'
  end
end

然后你可以将除了 v1/widgets#index 路由之外的所有路由都包装在

constraints NotWidgetRequest.new do 
  ...
end

阻止。这将阻止这些路由在 widgets.mywebsite.com 上解析

关于ruby-on-rails - 防止 html 请求的子域访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20088585/

相关文章:

ruby-on-rails - 如何在 Ruby on Rails 中不再需要 respond_to 模板?

react-native - 如何在 React Native Web Expo 中获取当前页面的完整 url?

Laravel 将 url 参数从 Controller 传递到路由

javascript - Raty jQuery 插件无法正常工作 Rails 5

ruby-on-rails - 如果我使用 '||=' 声明一个常数值,会发生什么(坏的)?

javascript - `Node.js` 和/或其他 Javascript 分支相对于非 JS 框架(Rails、Django...)的性能、稳定性和速度

gps - 路线查找软件如何工作?

ruby-on-rails - 如何处理 Rails 资源路由中的点字符?

ruby-on-rails-3 - 如何使继承的资源可选嵌套为单例?

ruby-on-rails - 你为 Rails 推荐哪个状态机插件?