блокировщик перекрестных запросов в Mozilla Firefox / IE от React js с использованием экспертной среды - PullRequest
0 голосов
/ 30 апреля 2018

Я использую React js во внешнем интерфейсе и nodejs в качестве внутреннего. Мое приложение работает нормально в браузере Chrome, но в браузере Mozilla Firefox появляется следующая ошибка:

Запрос перекрестного источника заблокирован: та же политика происхождения запрещает чтение удаленного ресурса в http://192.168.1.195:5000/authenticate/. (причина: отсутствует токен «тип контента» в заголовке CORS «Access-Control-Allow-Headers» с предполетного канала CORS).

Api написаны на Node js, протестированы в POSTMAN. (ТАКЖЕ, я правильно получаю ответ json, если я вызываю любой метод GET из браузера MOZILLA Firefox).

Так что я думаю, это не проблема с Node.js apis.

Для CORS я уже добавил следующий код:

 app.use(function (req, res, next) {
      res.setHeader('content-type', 'application/json');
      res.setHeader('Access-Control-Allow-Origin', '*');
      res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');
      res.setHeader("Access-Control-Allow-Headers", '*', 'Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With');
      res.setHeader('Access-Control-Allow-Credentials', true);

    next();
    });

Пример кода JSX:

ChkLogin(){
      const email = this.refs.email.value;
      const pwd   = this.refs.password.value;

      var auth;
      var token;
      var prev;
      localStorage.setItem('email',this.refs.email.value);
      let authURL= config.baseUrl+'/authenticate/';
      fetch(authURL, {
      method: 'POST',
      headers : {'Content-Type':'application/json'},
      body:JSON.stringify({'name':email, 'password':pwd})
      }).then((res) => res.json())
      .then((data) => {token=data[0].token;auth=data[0].auth;prev=data[0].prev;
      console.log(data);
          if(auth===true)
          {
            this.setState({prev});
            localStorage.setItem('prev',this.state.prev);
            this.setState({token});
            localStorage.setItem('token',this.state.token);
            this.props.history.push('/issue');
          }
          else {
            alert("Invalid Login")
            this.props.history.push('/');
          }
      })
      .catch((err)=>console.log(err))
    }

Соответствующий node.js api

exports.authenticate = function (req,res) {
var response = [];
if (
    typeof req.body.name !== 'undefined' &&
    typeof req.body.password !== 'undefined'

) {
    var name = req.body.name, password = req.body.password;
  connection.query('SELECT * from user where user_username = ?', [name], function(err, rows, fields)
  {
    if (!err){
      var response = [];
      if (rows.length != 0)
      {
             console.log(rows[0]['user_password'])
             console.log(md5(password))
             if(rows[0]['user_password']===md5(password))
           {
                           console.log(rows[0]['user_id']);
                   var token = jwt.sign({ id: rows[0]['user_id']}, tokenconfig.secret,
                 {
                                    expiresIn: tokenconfig.tokenLife 
                   });
                             var refreshToken = jwt.sign({ id: rows[0]['user_id']}, tokenconfig.refreshTokenSecret,
                                  {
                                        expiresIn: tokenconfig.refreshTokenLife
                                    })
                    response.push({ auth: true, token: token, refreshToken: refreshToken, prev: rows[0]['user_prev'] });
                                tokenList[refreshToken] = response;
                                console.log(tokenList[refreshToken]);
            } else {
                  response.push({'result' : 'error', 'msg' : 'Invalid Password'});
           }
     } else {
           response.push({'result' : 'error', 'msg' : 'User Not Found'});
     }
     res.setHeader('Content-Type', 'application/json');
    res.status(200).send(JSON.stringify(response));
} else {
    res.status(400).send(err);
    }
});
 } else {
      response.push({'result' : 'error', 'msg' : 'Please fill required details authenticate'});
      res.setHeader('Content-Type', 'application/json');
        res.status(200).send(JSON.stringify(response));
}
};

Кто-нибудь может мне помочь? Спасибо заранее.

PS: Получение такой же ошибки в IE 11 также

...