首页 > 解决方案 > 登录时,Axios 未在 app.js 中设置默认标头

问题描述

我遇到的问题是在尝试发出 POST 请求时,我不断收到“未经身份验证”错误。这个问题是因为api_token没有通过。如果我使用 PostMan 提出这个请求,它就可以工作。

在里面app.js我做了 aconsole.log(axios.defaults.headers.common)并且返回了X-CSRF-Token&Authorization Bearer xxxx令牌。

虽然,就axios在网站上调用之前(提交之后),我添加了另一个console.log(axios.defaults.headers.common),唯一返回的是Accept: 'application/json, text/plain, */*'它解释了为什么会出现“未经身份验证”错误,虽然我不知道为什么它是正确的,app.js但之后没有任何东西通过事实。注意:我没有在我的组件中重新导入 axios。

在我的app.js文件中,我为 axios 预设了标题:

window.axios  = require('axios')

    let token = document.head.querySelector('meta[name="csrf-token"]');
    if (token) {
        window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';
        window.axios.defaults.headers.common['X-CSRF-TOKEN'] = token.content;
    }
    
    let api_token = document.head.querySelector('meta[name="api-token"]');
    if (api_token) {
        console.log('api_token.content',api_token.content )
        // THIS ABOVE RETURNS DATA CORRECTLY.
        window.axios.defaults.headers.common['Authorization'] = 'Bearer ' + api_token.content;
    }

网站 - 提交后的组件:

async submitForm () {
  console.log('window.axios.default.headers.common', axios.defaults.headers.common)
  // THIS ABOVE ^^ RETURNS EMPTY HEADERS
  const res = await axios.post('/api/product/add/validate', this.form)
}

标签: javascriptvue.jsvuejs2axioslaravel-7

解决方案


推荐阅读