- a-sha.example.com = queryパラメータで指定されたURLのコンテンツを表示する外部サイト
- app.example.com = 実際に表示したいサイト。Vue.js で作りたい
こういう構成でコンテンツを提供したいときに、 Nuxt.js で作成しようとしたらルーティングがうまくできなかった。
http://a-sha.example.com/?url=http://app.example.com/contents でアクセスすると、Nuxt.jsが気を利かせて http://a-sha.example.com/contens?url=http://app.example.com/contents にURLを書き換えてしまう。
ローカルで再現させる
a-sha.example.com をパラメータで指定されたURLのコンテンツを返却するだけのサーバーとしてGoで立ててみる。
go run ./
しておく
Webサイト
https://nuxt.com/docs/getting-started/installation に従ってNuxt 3で作成して、configを次のようにしてスタートする
$ npx nuxt build
$ npx nuxt start
http://localhost:5555/?url=http://localhost:3000/contents で開くと、真っ白なページを開くことはできるが _nuxt/
配下のリソースを http://localhost:5555/_nuxt/
から取得しようとするのでnot foundとなる。
これを回避するために cdnURL を設定する
あとは どうにかして CORSを許可すれば _nuxt
配下のjsファイルを取得して、画面が表示できる。
ところが画面表示が完了すると http://localhost:5555/contents?url=http://localhost:3000/contents
にURLが書き換わってしまう。
Viteで作成する
Nuxtのルーティングや便利機能は諦めてViteでサーバーを立てる。
experimental.renderBuiltUrl で