【问题标题】:Prevent subdomain access for html requests阻止对 html 请求的子域访问
【发布时间】:2013-11-20 06:03:42
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

    所以听起来您想要反转路由中的逻辑 - 您想要限制大部分路由,以便它们仅在子域不等于小部件时才解析。这与上面的示例相反,在上面的示例中,您只在“小部件”子域上创建了一条路由。这很简单。

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

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

    然后您可以将除 v1/widgets#index 路由之外的所有路由包装在一个

    constraints NotWidgetRequest.new do 
      ...
    end
    

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

    【讨论】:

      猜你喜欢
      • 2019-01-21
      • 1970-01-01
      • 2020-06-09
      • 1970-01-01
      • 1970-01-01
      • 2015-02-08
      • 1970-01-01
      • 2015-06-22
      • 2019-11-04
      相关资源
      最近更新 更多