2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Rails初学者】Rails 8.0 の406エラーに対する対策 もう一度まとめておく

Last updated at Posted at 2025-04-24

Rails 8で発生する406エラーの原因と対処法まとめ

こんにちは。
現役看護師で、幼い子供を育てつつ、無謀かもしれませんがエンジニアを目指している母親です。
Rails 8以降では、Chromeのデバイスモードローカル環境のアクセスなどで「406 Not Acceptable」エラーが発生するケースがあります。

本記事では、エラーの原因と、その対処法を2つを備忘録として再度載せます。


どんなエラーが表示されたのか

Deviseでログインページ(例:/users/sign_in)にアクセスしたときに、

Rendering public/406-unsupported-browser.html Completed 406 Not Acceptable

と表示されて、ページが表示されないことがある。


原因

Rails 8(および Rails 7.2)から追加された以下の設定:

# app/controllers/application_controller.rb
allow_browser versions: :modern

このallow_browserは、古いブラウザやUser-Agentが不明なアクセスをブロックする機能。

ブロックされる主なケース

以下のような場合、User-Agentが "modern" でないと判断され、Rails 8 では406エラー(Not Acceptable)が発生。

  • Chrome DevTools で「モバイル表示」にしたとき
  • IPv6やローカル環境など、User-Agentが不明とみなされたとき

特に以下のブラウザバージョンは「modern」の基準を満たさず、ブロックされる可能性がありそう。

デバイス例 ブラウザバージョン
iPhone 14 Pro Max Safari 16.6
Pixel 7 Chrome 116
Galaxy S20 Ultra Chrome 116

対処法1:ApplicationController側で制限を外す(開発中のみ)

# app/controllers/application_controller.rb

class ApplicationController < ActionController::Base
  # allow_browser versions: :modern ← これをコメントアウトする
end

または環境ごとに条件分岐させて本番環境のみ有効にする方法もあるようです。

if Rails.env.production?
  allow_browser versions: :modern
end

メリット

  • 本番では制限を有効にできる

デメリット

  • コメントアウトを忘れて本番環境に出すと古いブラウザも許可してしまう

対処法2:development.rbでUser-Agentチェックを無効化

# config/environments/development.rb

Rails.application.configure do
  # 末尾に追加
  config.action_dispatch.allow_browser = ->(user_agent) { true }
end

この設定を入れると、開発環境で常にすべてのブラウザを許可できるようです。

設定後はサーバー再起動が必要になります。

# サーバー停止後に再起動
bin/dev
# または
rails server

おわりに

今回紹介した2つの対処法のどちらかを実施することで、開発中に発生する406エラーは解消される可能性がありそうです。
以前、対処法2:development.rbで User-Agent チェックを無効化する方法のみを取っていましたが、他のやり方もあったので忘れないようにまとめました。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?