CORS в узлах блоков POSTMAN для получения данных? - PullRequest
0 голосов
/ 03 мая 2020

Я использую инструмент разработчика POSTMAN для тестирования этого API:

http://localhost:3000/users

, и у меня есть скрипт express.js:

const express = require("express");
const cors = require("cors");
const mongoose = require("mongoose");
const mongoConfig = require("./config/mongodb.config");
var bodyParser = require("body-parser");
// Routers
const userRouter = require("./core/user/user.route");

const app = express();
const port = process.env.PORT || 3000;
const URI = mongoConfig.mongoURI;
const connectionOptions = mongoConfig.connectionOption;

// Connect Mongo Atlas database
mongoose
  .connect(URI, connectionOptions)
  .then(() => {
    console.log("Connection is established successfully ...");
  })
  .catch((err) => {
    console.error(err);
  });

app.use(bodyParser.urlencoded({ extended: false }));
app.use(express.json());
app.use(cors);

app.use("/users", userRouter);

app.listen(port, () => {
  console.log("The server is running on port", `${port}`);
});

Проблема заключается в том, что я удаляю CORS:

// app.use(cors);

POSTMAN может получать данные, но когда я добавляю CORS, он блокирует и возвращает эту трассировку стека:

Could not get any response
There was an error connecting to http://localhost:3000/users.
Why this might have happened:
The server couldn't send a response:
Ensure that the backend is working properly
Self-signed SSL certificates are being blocked:
Fix this by turning off 'SSL certificate verification' in Settings > General
Proxy configured incorrectly
Ensure that proxy is configured correctly in Settings > Proxy
Request timeout:
Change request timeout in Settings > General

Насколько я знаю, POSTMAN - это инструмент dev, и CORS связан только с с браузером, но я не понял причину этого.

1 Ответ

0 голосов
/ 03 мая 2020

После отладки моего server.js я обнаружил, что ошибка была на моем сервере и она не связана с POSTMAN.

Проблема в использовании cors, прежде чем пользователь my routers заблокирует сервер (неограниченный цикл ).

Поэтому, когда я изменил этот код:

app.use(cors);
app.use(express.json());
app.use("/users", userRouter);

На

app.use("/users", userRouter);
app.use(cors);
app.use(express.json());

Проблема решена, но я не понял, почему и что именно происходит внутри сервер.

...