Express промежуточное программное обеспечение выполняется дважды, если заголовки передаются с запросом? - PullRequest
0 голосов
/ 14 марта 2019

Привет, я новичок в Node js. Я использую экспресс-фреймворк для этого

Мое промежуточное ПО запускается дважды, если я передаю ему заголовки ниже. Моя установка

const express = require('express');
const port = 3003;
const app = express();


app.use( function(req, res, next){
    console.log('This is called twice when headers are passed in request:');
    res.header("Access-Control-Allow-Origin", "*");
    res.header("Access-Control-Allow-Headers", "*");
    next();
});


app.get('/', function(req, res, next){
    console.log('hey im called');
    res.send({message: 'hi'})
});


const server = app.listen(port, function(error){
    if (error){
    console.log(`Error: ${error}`)
    return
    }
    console.log(`server is listining on ${port}, ${this}`)
});

звонок с консоли браузера $.ajax({ url: 'http://localhost:3003', headers: { x: 1 , y: 1}})

1 Ответ

1 голос
/ 14 марта 2019

Похоже, что вы делаете вызов AJAX из домена, отличного от localhost:3003, браузер сначала отправит вызов pre-flight option до фактического API.

Вы можете найти более подробную информацию о pre-flight или CORS Здесь

Решение: Вы можете отобразить html-страницу в корневом URL-адресе /, которая будет содержать вызов ajax, и указать существующий маршрут API как

.

app.get('/test', function(req, res, next){ console.log('hey im called'); res.send({message: 'hi'}) });

и ваш вызов ajax будет

$.ajax({ url: 'http://localhost:3003/test', headers: { x: 1 , y: 1}})

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...