У меня проблема с моим API.Когда я использую выборку из ReactJS для отправки un json на сервер NodeJS, сервер падает ...
вызов выборки:
const jso = JSON.stringify({
username: this.state.username,
password: this.state.password
})
fetch("URL/authentication", {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
body: jso,
}).then(res => res.json()).then((result) => {
this.setState({
answer: result.answer
})
}, (error) => {
this.setState({isLoaded: true, error});
})
}
Вот внутренняя сторона
var express = require('express');
var app = express();
var cors = require('cors');
var bodyParser = require('body-parser')
var mysql = require("mysql");
//Enabeling all Access-Control-Allow-Origin
app.use(cors());
app.options('*', cors())
var port = process.env.PORT || 5000
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
//omitted mysql connections details
app.post('/authentication', (req, res) **=> {
email = req.body.username,
password = req.body.password,
matching = "false"
var dbpassword
sql = "SELECT password FROM users WHERE email = ?";
db.query(sql, email, (err, result, fields) => {
if(err) {
console.error('error query: ' + err.stack)
return;
}
dbpassword = result[0].password;
if(dbpassword === password){
matching = "true";
console.log(dbpassword + " : " + password);
}
res.send({answer: matching});
});
})
app.listen(port, function(){
console.log("app running");
})
Дело в том, что это приводит к сбою моего сервера (размещенного на Heroku) каждый раз, когда я делаю запрос от внешнего интерфейса ...
Однако, когда я пытаюсь удалить часть заголовка с передней панелиВ конце концов, сервер не падает, но ничего не возвращает ...
После просмотра журналов я обнаружил, что, когда fetch имеет часть заголовка с 'Content-Type': 'application/json'
, он отправляет запрос OPTIONS до того, какпочтовый запрос ...
Мой вопрос: как я могу заставить это работать?Я попробовал почтовый запрос от почтальона, и он работает, поэтому я знаю, что мой сервер / алгоритм не проблема.Кроме того, сервер для серверной части - Heroku