Я создал приложение ReactJs с Node Api, которое использует Restify, но что бы я ни делал, всегда возникает ошибка для метода POST:
- 405 (Метод не разрешен)
- Доступ к выборке в 'http://localhost:3001/api/login' из источника' http://localhost:3000' был заблокирован политикой CORS: Ответ на предпечатный запрос не проходит проверку контроля доступа: Нет 'Access-Control-Allow-Origin'заголовок присутствует на запрашиваемом ресурсе.Если непрозрачный ответ соответствует вашим потребностям, установите режим запроса «no-cors», чтобы получить ресурс с отключенным CORS.
Я перепробовал все, что видел в Интернете, но у меня всегда есть эта проблема.
Для вызова API вот мой код:
const request = new Request(url + 'login', {
method: 'POST',
body: JSON.stringify({ 'username' : username, 'password' : password }),
headers: new Headers({ 'Content-Type': 'application/json' })
})
return fetch(request)
.then(response => {
if (response.status < 200 || response.status >= 300) {
throw new Error(response.statusText);
}
return response.json();
})
.then(({ token }) => {
localStorage.setItem('token', token);
});
И я настраиваю Restify следующим образом:
const config = require('./config'),
restify = require('restify'),
errs = require('restify-errors');
var connection = config.db.get
const server = restify.createServer({
name: config.name,
version: config.version,
url: config.hostname
});
server.use(restify.plugins.acceptParser(server.acceptable));
server.use(restify.plugins.queryParser());
server.use(restify.plugins.bodyParser());
server.use(
function crossOrigin(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
res.header('Access-Control-Allow-Methods', 'GET, POST, PUT, OPTIONS, DELETE');
res.header('Access-Control-Allow-Credentials', false);
return next();
}
);
server.listen(3001, function () {
console.log('%s listening at %s', server.name, server.url);
});
server.post("/api/login", function (req, res) {
res.send(200);
});
Так что я ожидаю получить подтверждение (код200) после вызова API, но у меня всегда возникает проблема с CORS.
Есть ли что-нибудь еще для настройки?
Спасибо за вашу помощь !!!: D