質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Nuxt.js

Nuxt.jsは、ユニバーサルなSPAが開発可能なVue.jsベースのフレームワーク。UIの描画サポートに特化しており、SSRにおけるサーバーサイドとクライアントサイドのUIレンダリングなどさまざまな機能を持ちます。

Q&A

解決済

1回答

1836閲覧

Nuxtでaxiosにトークンを常時付けたいけど上手くいかない

matsuo_basho

総合スコア88

Nuxt.js

Nuxt.jsは、ユニバーサルなSPAが開発可能なVue.jsベースのフレームワーク。UIの描画サポートに特化しており、SSRにおけるサーバーサイドとクライアントサイドのUIレンダリングなどさまざまな機能を持ちます。

0グッド

0クリップ

投稿2020/10/01 13:23

いつもお世話になっております。

Nuxtでaxiosを利用する際に自作プラグイン(@/plugins/axios.js)を用いて全てのリクエストにトークンを付けようとしているのですが上手くいきません。

【Nuxt.js】axiosでheaderにAuthorizationを常につけたい!

Nuxt.jsビギナーズガイド のソースコードをコピペしてみても401エラーになってしまいます。

Postmanでheadersにトークンをつけると上手くデータを取得できるのですが…。

またaxios.jsconsole.logで任意の値を出力はできるので、

恐らく、config.headers.common['Authorization'] または axios.defaults.headers.common['Authorization'] の設定に問題があるのではないかと思っています。

なお、Nuxt自体はインストール直後でカスタマイズ等はしておりません。

どなたか解決策が分かる方ご教授いただけると幸いです。

javascript

1 2// @/plugins/axios.js 3 4import axios from 'axios' 5 6export default function({$axios}){ 7 $axios.onRequest((config) => { 8 9 // axios.defaults.headers.common['Authorization'] = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6Im9saXZpZXJAbWFpbC5jb20iLCJpYXQiOjE2MDE1NTYzODksImV4cCI6MTYwMTU1OTk4OSwic3ViIjoiMSJ9.ee960uJHWObwvfnBuBaM8c6PG8MIRsOR1vnkRRYXxBE" 10 config.headers.common['Authorization'] = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6Im9saXZpZXJAbWFpbC5jb20iLCJpYXQiOjE2MDE1NTYzODksImV4cCI6MTYwMTU1OTk4OSwic3ViIjoiMSJ9.ee960uJHWObwvfnBuBaM8c6PG8MIRsOR1vnkRRYXxBE" 11 12 return config 13 }) 14} 15

javascript

1 2// nuxt.config.js 3 4export default { 5 srcDir: 'app', 6 // Global page headers (https://go.nuxtjs.dev/config-head) 7 head: { 8 title: 'project_01', 9 meta: [ 10 {charset: 'utf-8'}, 11 {name: 'viewport', content: 'width=device-width, initial-scale=1'}, 12 {hid: 'description', name: 'description', content: ''} 13 ], 14 link: [ 15 {rel: 'icon', type: 'image/x-icon', href: '/favicon.ico'} 16 ] 17 }, 18 19 // Global CSS (https://go.nuxtjs.dev/config-css) 20 css: [], 21 22 // Plugins to run before rendering page (https://go.nuxtjs.dev/config-plugins) 23 plugins: [ 24 {src: '@/plugins/axios.js'}, 25 ], 26 27 env: {}, 28 29 // Auto import components (https://go.nuxtjs.dev/config-components) 30 components: true, 31 32 // Modules for dev and build (recommended) (https://go.nuxtjs.dev/config-modules) 33 buildModules: [], 34 35 // Modules (https://go.nuxtjs.dev/config-modules) 36 modules: [ 37 // https://go.nuxtjs.dev/bootstrap 38 'bootstrap-vue/nuxt', 39 // https://go.nuxtjs.dev/axios 40 '@nuxtjs/axios', 41 ], 42 43 // Axios module configuration (https://go.nuxtjs.dev/config-axios) 44 axios: { 45 baseURL: 'http://localhost:8890', 46 }, 47 48 // Build Configuration (https://go.nuxtjs.dev/config-build) 49 build: {} 50} 51

html

1 2# pages/index.vue 3 4<template> 5 <div class="container mt-5"> 6 7 </div> 8</template> 9 10<script> 11export default { 12 13 async asyncData(app){ 14 15 const URL = "/660/posts" 16 const res = await app.$axios.$get(URL) 17 18 console.log(res); 19 20 return { 21 data 22 } 23 } 24 25} 26</script>

イメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

下記のようにコードを修正してみてください。

# 間違い config.headers.common['Authorization'] = ... # 正解 config.headers.Authorization = ...

投稿2020/10/02 22:30

yuhigash

総合スコア327

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

matsuo_basho

2020/10/03 03:10

ご回答いただき誠にありがとうございます! ご提案いただいたように修正してみたのですが、変わらず401エラーが発生してしまいます。 それぞれのページ(index.vueのような)で、都度headers: {Authorization: `Bearer ${TOKEN}`,} のように設定しても問題なく記事取得ができるので、やはプラグインを利用してのaxiosのヘッダーにトークンをつけるのが上手くいかないようですね。。。
yuhigash

2020/10/10 13:23

config.headers.Authorization = `Bearer .....` ですね。 現状のコードは「Bearer 」がついていませんでした。コチラも修正お願いいたします。
matsuo_basho

2020/10/10 14:48

yuhigashさん、ありがとうございます!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問