当サイトは、一部記事に広告を含みます

Basic認証環境でmanifest.jsonが401エラー|Failed to load resource: the server responded with a status of 401

Next.js x vercelでアプリを開発していたところ、本番環境のみmanifest.jsonの読み込みがエラーとなっているのを発見。

Loading code...

これも出てた👇

Loading code...

原因

どうやらBasic認証をかけていると、manifest.jsonにアクセスできないらしい。
crossorigin 属性を use-credentials に設定してあげればよいっぽい↓

マニフェストへのアクセスに資格情報が必要な場合は、マニフェストファイルが現在のページと同じオリジンにあったとしても、 crossorigin 属性を use-credentials に設定する必要があります

https://developer.mozilla.org/ja/docs/Web/Manifest

対応方法

基本的には以下のようにmanifest.jsonの読み込みタグにcrossorigin="use-credentials"を付与してあげれば◎

Loading code...

↓ このように変更する

Loading code...

Next.js15のApp routerの場合、ちょっと悩ましかった

Next.js15では、app/manifest.jsonというファイル名で設置するとnextjsが自動で検知しタグを出力してくれます。

なので、linkタグを触ることができなかったんですよねえ🥺

結局こうやって対応しました

本当はnextjsが自動で出力してくれるタグにオプション的な感じで属性が追加できたら理想だったのですが、どうしても方法が見つけれられず・・・!

最終的に以下の方法で対応しました。

public/manifest.jsonを設置

②headタグにてmanifest.jsonの読み込みタグを記述

Loading code...

app/manifest.jsonを削除(重複してしまうため)

この記事が役に立ったら、
記事執筆のコーヒー代として応援してもらえると励みになります☕️

Buy Me A Coffee

関連記事