节点服务器无法检索react axios请求头参数的值

时间:2017-09-25 14:51:43

标签: node.js reactjs http-headers axios

我需要访问服务器端(节点)中的axios标头授权令牌,显示未定义。请帮忙..

客户端(React)请求:

var config = {
        headers: {
            'cache-control':'no-cache',
            'content-type': 'application/x-www-form-urlencoded',
            'authorization' :'bearer '+Auth.getToken()
          }
      };
    axios.get(ApiConfig.API_BASE+'api/admin/profile/', config).then(function(response) {
      this.setState({status:'success', profile: response.data.data});
    }).catch(function(response) {
        console.log(response);
    });

服务器端(节点):

module.exports = (req, res, next) => {

console.log(req.headers.authorization); 

  if(!req.headers.authorization) {
    return res.status(401).end();
  }
 }; 

日志显示未定义。我也控制整个标题,但它们的输出是:

{ host: 'localhost:8027',
  'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:55.0) Gecko/20100101 Firefox/55.0',
  accept: 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
  'accept-language': 'en-US,en;q=0.5',
  'accept-encoding': 'gzip, deflate',
  'access-control-request-method': 'GET',
  'access-control-request-headers': 'authorization,cache-control',
  origin: 'http://localhost:3001',
  connection: 'keep-alive' }

如何检索授权令牌值?

谢谢。

2 个答案:

答案 0 :(得分:0)

我假设你正在使用快递。如果是,请尝试{{1}}。

,而不是将标头值设为{{1}}

http://expressjs.com/en/api.html#req.get

答案 1 :(得分:-1)

如果您要发出跨域HTTP请求,请确保已在服务器中启用CORS。如果您使用快速cors中间件可以使用。

我想你的问题是,由于CORS尚未启用,您的服务器将首先收到OPTIONS请求,因此您控制的整个标头来自OPTIONS请求,而不是您想要的GET请求。您可以使用console.log(req.method)进行验证。 BTW req.headers.authorization可以接收标题。