我发布了一个问题here,但经过一些调查后,我意识到这不是我的axios请求导致的问题。我不知道如何结束一个问题,对不起。
我在尝试发送Axios Get请求到我的express后端服务器时收到以下错误。前端托管在localhost:8080上,后端是localhost:5000。
[express-ntlm] Error when parsing Authorization header for URI http://localhost:5000/api/user/generateToken这是我的客户端Axios请求
axios.defaults.baseURL = 'http://localhost:5000/';
const generateToken = () => {
axios
.get('/api/user/generateToken', {
withCredentials: true,
})
.then(payload => {
// Set Auth Header with returned JWT Token
})
.catch(err => {
console.log(err.response);
});这是站点首次启动后发送的第一个请求,它应该返回一个JWT令牌,我将使用该令牌让用户登录。
然后我让express-ntlm设置让用户登录用户名,以检查他们是否在我们的数据库中,如果是,则返回一个有效的令牌。
设置express-ntlm的服务器代码是
const express = require('express');
const http = require('http');
const path = require('path');
const cors = require('cors');
const ntlm = require('express-ntlm');
const passport = require('passport');
const server = express();
server.use(
ntlm({
debug: function() {
var args = Array.prototype.slice.apply(arguments);
console.log.apply(null, args);
},
domain: 'domain',
domaincontroller: 'ldap://domainAddress',
})
);然后,如果我在浏览器中直接导航到http://localhost:5000/api/user/generateToken,我会得到预期的结果。但是,如果我对url使用axios.get和代理,我会在服务器控制台得到上述错误,在客户端控制台得到一个400Bad Request。
下面是Router.get代码
// @route GET api/user/generateToken
// @desc Create JWT Token
// @access Public
router.get('/generateToken', (req, res) => {
const errors = {};
const username = req.ntlm.UserName;
return User.findOne({ username }).then(user => {
// Create JWT and return it to the user
});
});我不知道下一步该怎么做,要么是axios设置头部所需的一些额外设置,要么是我需要为express-ntlm更改的一些设置。这很奇怪,因为我可以直接转到页面,它可以工作,但使用axios,它失败了。
发布于 2019-09-10 04:30:15
尝试将标题打印到控制台,并检查Authorization标题有什么问题。可能是Axios修改了它。
将您从手动athorization获得的头部与通过axios获得的头部进行比较。
https://stackoverflow.com/questions/57036925
复制相似问题