Ошибка CORS при получении ответа от серверного кода - PullRequest
0 голосов
/ 02 мая 2020

Доступ к выборке по 'url' из источника 'url' был заблокирован политикой CORS: Ответ на предпечатный запрос не проходит проверку контроля доступа: в запрошенном заголовке «Access-Control-Allow-Origin» нет ресурс. Если непрозрачный ответ удовлетворяет вашим потребностям, установите режим запроса «no-cors», чтобы получить ресурс с отключенным CORS.

Я почти все перепробовал, чтобы попытаться пройти эту ошибку, но это все еще Мы будем очень признательны за любые идеи и советы.

На стороне сервера:

const express = require('express');
const cors = require('cors');
const DataStore = require('Nedb')

const app = express();

app.use((req, res, next) => {  
    res.set('Access-Control-Allow-Origin', '*');
    next();
  });

const database = new DataStore('database.db');
database.loadDatabase();

app.use(cors());
    app.use(express.json());

app.post('/dbpostLoad', (req, res) => {
     database.find({}).exec(function (err, data){
        res.json(data)
     }); 
});

На стороне клиента:

window.addEventListener('load',(event)=> { 
    const options1 = {
        method : 'POST',
        headers: {
            'Content-Type' : 'application/json'
        }
    } 

    getData();
    async function getData(){
        const response = await fetch(loadData_URL, options1);
        const data = await response.json();

Ответы [ 3 ]

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

Я думаю, что есть какая-то ошибка в API.

'Access-Control-Allow-Origin' должен иметь значение true в API.

<httpProtocol>
      <customHeaders>
        <add name="Access-Control-Allow-Origin" value="*" />
        <add name="Access-Control-Allow-Headers" value="content-type" />
        <add name="Access-Control-Allow-Methods" value="POST, GET, OPTIONS, PUT" />
      </customHeaders>
    </httpProtocol>
0 голосов
/ 03 мая 2020

Я не вижу проблем с кодом, ошибка может быть в любой другой части вашей кодовой базы. Если это открытый исходный код, может помочь ссылка для обмена репо.

Попробуйте протестировать с curl

curl -i localhost:3001/dbpostLoad

Некоторые настройки, которые я бы предложил

app.use(cors()) будет первым оператором после const app = express();. И вам не нужно устанавливать этот заголовок вручную.

Следующая часть кода может быть удалена:

app.use((req, res, next) => {  
    res.set('Access-Control-Allow-Origin', '*');
    next();
});
0 голосов
/ 02 мая 2020

Серверная сторона:

const cors = require('cors')({origin: true});
app.use((req, res, next) => { 
  cors(req, res, () => {
       //Your code here
  })
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...