身に覚えのないCORSエラーの元凶

まじのアバター

Next.jsとSupabaseでGoogleでログインをやっていたのですが、ありえないくらいずっとCORSのエラーが出てできませんでした。

犯人は、とんでもないヤツでした…

o1-mini、頼むわ。(経緯)

エラーが出た当初、Cursorのo1-miniに頼んだりしていました。

o1-miniはいろんな処置を施してくれました。あらゆる箇所にデバッグ用のconsole.logを残してくれたのです。(本当にありがとう)

そして睨みあいすること7時間。(え?)

一つのエラーにたどり着きました。

Access to fetch at 'https://(ふせじ).supabase.co/auth/v1/user' from origin 
'http://localhost:3000' has been blocked by CORS policy:
The 'Access-Control-Allow-Origin' header has a value 'https://localhost:3000' that is
not equal to the supplied origin. Have the server send the header with a valid value,
or, if an opaque response serves your needs, set the request's mode to 'no-cors'
to fetch the resource with CORS disabled.

ほーん。なぜかローカルホストに対するリクエストがHTTPSになっているせいで、オリジンが変わっちゃってるのね。(ここまで3時間)

Supabaseとか.env.localとかGCPのURL設定してるところ、確認してみてネ!

わし「おけー!(なんだ、すぐ終わりそうだな…)」


(あれ、、、おかしいぞ、どこもちゃんとHTTPになってる…)
ねぇ、o1-mini、そのへんのURLは大丈夫だったよ

は?違うが?お前が間違ってるが?ちゃんと確認しろ?サーバー再起動した?クッキー消してみた?

いや、全部やりましたが……..(4時間経過)…あ、そうだ。

ここで気づきます。手っ取り早くプレーンな環境からアクセスできる、シークレットブラウザがあるじゃないかと。
使っていたEdgeのシークレットブラウザはいろいろ拡張機能とかもオンにしていてプレーンとは言い難かったので、Chromeのシークレットブラウザを利用することにしました。

………あれ?普通にログインできるぞ???というか、Chromeだったらシークレットじゃなくてもログインできるぞ?

…….妙だな…HTTPS….HTTP….どこかで聞いたような…….( ゚д゚)ハッ!

これに違いない!!!
HTTPS Everywhere!

うっきうきでオフるわし。

そしてログイン..すると…ログイン、できました….!!!! (o1-miniありがとう)

結論

さて、慣れない茶番劇は終わりです。読み飛ばした懸命な方も多いと思われますので、ここに結論を書きます。

HTTPS Everywhereという拡張機能が原因でした。
これ、いらないところまでHTTPSにしちゃうんですね。(゜゜)

あとこれ、確かEdgeに標準搭載されてたはずなんです。そして、今日は「気分転換にEdgeでも使ってみるか~」と思って、Edgeを特別に使用した日でした。まぁ、真犯人はEdgeじゃなくてHTTPS Everywhereなんですけどね。

GitHubとかStack OverFlowにも同様のエラーを食らって困っている人がたくさんいらっしゃいましたが、あの人達も実は同じ原因だったりするんでしょうか…?

Stack OverFlowはアカウントないからGitHubに行ってきます。

ここまで読んでくださり、ありがとうございました。身に覚えのないCORSエラーの対処法でした。



コメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA