Когда мой веб-сайт вызывает API REST (код ниже), выполняется только запрос OPTIONS
, запрос POST
или GET
не выполняется.Запрос OPTIONS
успешно проходит белый список CORS.Запрос POST
или GET
не регистрируется, он также не блокируется белым списком.Странно то, что запрос Google Recaptcha работает, все третьи сайты, кроме моего.API работает в том же домене, что и веб-сайт, только другой порт.
Мой сайт использует Cloudflare, Cloudflare постоянно меняет IP-адреса входящих запросов.Мой сайт, его IP-адрес - ipv6 после того, как он прошел через прокси-сервер cloudflare.Веб-сайт, на котором указан его ip, указан в виде списка адресов ipv6.
const whitelist = ["*all the ip addresses"];
var corsOptions = {
origin: (origin, callback) => {
if (whitelist.indexOf(origin) !== -1) {
callback(null, true)
} else {
callback('Not allowed by CORS');
}
}
};
const app = express();
mongoose.connect(*mongodb credentials*);
app.use((req, res, next) => {
req.headers.origin = req.headers['cf-connecting-ip'] || req.headers['x-forwarded-for'] || req.connection.remoteAddress;
next();
});
app.use(morgan('combined'));
app.use(cors(corsOptions));
app.use(bodyParser.json({type: '*/*', limit: '2mb'}));
app.use(bodyParser.urlencoded({limit: '2mb', extended: true}));
app.use(*routing*);
module.exports = app;