Невозможно получить JSON с Express сервера, используя API извлечения - PullRequest
0 голосов
/ 15 февраля 2020

В Express сервер работает на порте 8080 у меня;

app.use(function(req, res, next) {
  res.header("Access-Control-Allow-Origin", "http://localhost:8081");
  res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
  next();
});

Запрос с порта 8081

fetch('http://localhost:8080/...')
      .then((response) => response.json())
      .then((json) => {
        let jsonStr = JSON.stringify(json);
        console.log(jsonStr)
      })
      .catch((error) => console.log(error))

Ошибка, которую я получаю:

Access to fetch at 'http://localhost:8080/...' from origin 'http://localhost:8081' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.

Если я просто вручную наберу express url в браузере, я вижу JSON, который я пытаюсь получить.

Я прочитал несколько постов, чтобы решить эту проблему, но все еще не могу решить это.

Как получить, чтобы избежать этой ошибки?

Ответы [ 2 ]

0 голосов
/ 15 февраля 2020

Вы можете использовать cors, чтобы избавиться от этого;

const express = require('express')
const cors = require('cors')
const app = express()

app.use(cors())
0 голосов
/ 15 февраля 2020

Вы получаете данные с другого порта (8081), и именно поэтому вы получаете сообщение об ошибке CORS. Измените политику контроля доступа следующим образом:

  res.header("Access-Control-Allow-Origin", "http://localhost:*");

Эта ссылка может пригодиться.

...