Я использую 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 также