NitroサーバーのCORS設定でくじけた
Nuxtはサーバーです。ここが未だほんとに了解できていません。いや頭ではわかっているのですが、それがほんとはどうゆうことか未だ十分に理解できていない予感がするのです。つまり、ASP.NETのようなサーバーなのか?同列なのか?これでいいのか?を心の底から信じることができません。なのですが、たぶん、そうなのでしょう。
Azureの場合、ASP.NETやexpressサイトのホストには App Servicesが必要となるでしょう。一方、Nuxtサイトは、App Servicesにデプロイできるのでしょうか?おそらくは可能と思いますが、Web上にあるのは、Static Web Appsへのデプロイの説明だけです。わかってないのは、この違いです。なぜ、Static Web Appsにデプロイできるのかがよくわかっていません。とにかく、Azureじゃなくても、他にも、netlifyとかVercelとか... とにかく、/api なルートもあるサイトを動かすことができるそうです。
さて、NuxtのサーバーエンジンはNitroというそうです。NitroはWebサーバーです。なので、CORSの設定はNitroが受け持つはずです。ありました。動作を確認するため、一旦、NuxtではなくNitro単体で動作を確認してみることにします。プロジェクトを作成して、静的ファイルは /server/public に置けば良いようです。CORSの設定は、とりあえず次のようにします。
routeRules: {
'/**': { cors: true },
},
defineEventHandler経由のルートに関しては問題なくCORSなヘッダーが追加されるようになりました。 うーん、しかし、/public/test.txt のレスポンスヘッダーにCORSなヘッダーが追加されません; configの設定は、 /public 配下には働かないような気がします。はたしてこれは仕様なのでしょうか? githubのissuesに同様の問題のアップもあるようなのですが、それが解決したのかどうか?何か対処の方法はあるのか? CORSの他の問題も絡まって経過がよく読み切れませんTT
このあたりがやはり不安になりますよね。歴史がまったく足りてない気がします。とにかく、このままではこの機能のホストにNuxtは使えないような気がしてきます。ふりだしに戻りそうです。