Nuxt.js の Axios を使って API を叩くとCORS
とか言うエラーが発生した場合の対処法。
(CORS 説明は省かせてもらいます)
Zennに書き直しバージョンあります
解決方法
modules: [
'@nuxtjs/axios',
'@nuxtjs/proxy'
],
proxy: {
'/api': {
target: 'http://example.com',
pathRewrite: {
'^/api' : '/'
}
}
}
は?意味わからんって思ったあなた僕も同じでした。
これだけ書かれてもなんにもわかりません 🤔🤔🤔
しかも今プロキシ使う場合ちょっと違う方法を使います。このコードは忘れてください。
とっても優しい解決方法
1. Nuxt.js Axios module をのプロキシ設定をオンにする。
axios: {
proxy: true
},
2. proxy の設定をする
proxy: {
'/api/': {
target: 'http://example.com',
pathRewrite: {'^/api/': ''},
}
}
これでhttp://localhost:3000/api
orhttp://your.site/api
にリクエストするとhttp://example.com
として処理されます。
pathRewrite
でapi
を消してあげるってのを書かなかった場合http://example.com/api
になります。
※Nuxt Axios module には Nuxt proxy module が内蔵されています。
3. API を叩く
this.$axios.$get("/api");
これでさっき設定したhttp://example.com
に get リクエストを送っているという事になっていてしっかりとデータが返ってくると思います。
this.$axios.$get("/api/test");
のようなリクエストでもhttp://example.com/test
として利用できます。
終わりに
自分のサイトにリクエストを送ってるのに別のサイトのデータが返ってくるってのに少し違和感を覚えるかもしれませんが、このように設定してあげる事でしっかりと API を使うことができますし、リクエストする URL が短くなって便利だと思います!
最後まで読んでくださってありがとうございます。