Skip to content

Multi level subdomain is not allowed after Rails 6.1.4.2 #44771

Closed
@r7kamura

Description

@r7kamura

Steps to reproduce

Run this test:

# frozen_string_literal: true

require 'bundler/inline'

gemfile(true) do
  source 'https://rubygems.org'

  gem 'rails', '7.0.2.3'
end

require 'rack/test'
require 'action_controller/railtie'

class TestApp < Rails::Application
  config.root = __dir__
  config.hosts << '.example.org'
  config.session_store :cookie_store, key: 'cookie_store_key'
  secrets.secret_key_base = 'secret_key_base'

  config.logger = Logger.new($stdout)
  Rails.logger  = config.logger

  routes.draw do
    get '/' => 'test#index'
  end
end

class TestController < ActionController::Base
  include Rails.application.routes.url_helpers

  def index
    render plain: 'Home'
  end
end

require 'minitest/autorun'

class BugTest < Minitest::Test
  include Rack::Test::Methods

  def test_two_level_subdomain_returns_success
    header 'Host', 'b.a.example.org'
    get '/'
    assert last_response.ok?
  end

  private

  def app
    Rails.application
  end
end

Expected behavior

It passes.

In other words, when I set up .example.org, I expect b.a.example.org to be allowed as on Rails 6.1.4.1 and earlier.

Actual behavior

It fails.

It succeeded on Rails 6.1.4.1 and earlier, but started to fail on Rails 6.1.4.2. Is this an intended change?

System configuration

rails 7.0.2.3:

ruby 2.7.2p137:

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions