Webpack devserver代理,如何避免401错误?

时间:2018-09-04 09:19:25

标签: javascript proxy react-redux axios webpack-dev-server

我面临着一个我不知道如何解决的问题。 我有一个项目,我在前端使用React和Redux,在后端使用Springboot。

前端:http://localhost:8080
后端:http://localhost:8090

Webpack版本:

"webpack": "^4.17.2",
"webpack-cli": "^3.0.7",
"webpack-dev-server": "^3.1.7"

这是我的webpack.config.js

const webpack = require('webpack');

module.exports = {
    entry: [
        'react-hot-loader/patch',
        './src/index.js'
    ],
    module: {
        rules: [
            {
                test: /\.(js|jsx)$/,
                exclude: /node_modules/,
                use: ['babel-loader']
            }
        ]
    },
    resolve: {
        extensions: ['*', '.js', '.jsx']
    },
    output: {
        path: __dirname + '/dist',
        publicPath: '/',
        filename: 'bundle.js'
    },
    plugins: [
        new webpack.HotModuleReplacementPlugin()
    ],
    devServer: {
        contentBase: './dist',
        hot: true,
        historyApiFallback: true,
        headers: {
            "Access-Control-Allow-Origin": '*',
            "Access-Control-Allow-Methods": "GET, POST, PUT, DELETE, PATCH, OPTIONS",
            "Access-Control-Allow-Headers": '*'
        },
        proxy: [{
            context: ['/oauth/**', '/flows/**', '/flow/**', '/flowDetail/**', '/flowDetails/**', '/templateDetail/**', '/templateDetails/**', '/usersUnix/**', '/userUnix/**'],
            target: 'http://localhost:8090',
            changeOrigin: true
        }],
    }
};

我这样通过axios(v0.18.0)调用网址:

axios.get('/flows/search/findByUserId?userId=2&page=0&size=5', {headers: {Authorization: Bearer}})
axios.get('/flows/' + id, {headers: {Authorization: Bearer}})

代码工作正常,但是当我尝试使用以下网址重新加载页面时:

axios.get('/flows/' + id, {headers: {Authorization: Bearer}})

我可以通过主页上的链接打开打开此页面。但是服务器不会重新加载页面,我出现401错误。我无法重新加载页面。不知道为什么... 由于我已经实现了代理配置,因此发生了此错误。以前,没有代理就可以加载/重新加载每个页面。

我不明白为什么我无法重新加载此特定页面/ URL。

这是我尝试重新加载第二个URL时出现的确切错误消息: enter image description here

enter image description here

enter image description here enter image description here

1 个答案:

答案 0 :(得分:0)

问题与 axios {Authorization:Bearer} 标头有关。重新加载页面时,您没有传递标题。尝试检查授权标头是否在浏览器的“网络”标签下的标头中传递