Я делаю запрос из моего внешнего приложения React и запускаю его на моем сервере с localhost: 80. При просмотре запроса и заголовка в браузере Chrome автоматически удаляет номер порта, что вызывает ошибку CORS. Почему Chrome удаляет этот номер порта? Каковы лучшие практики в этом сценарии? Я просто изменил порт с 80 на 8080, и это решило проблему.
Я установил заголовки Access-Control-Allow-Origin для всех типов HTTP-запросов, и это, похоже, не решило проблему. Это также привело меня к мысли, что причиной отсутствия проблемы был порт, отсутствующий в заголовке запроса (поэтому я изменил его с 80 на 8080).
app.get('*', (req, res) => {
res.setHeader('Access-Control-Allow-Origin', '*');
res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE'); // If needed
res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type'); // If needed
res.setHeader('Access-Control-Allow-Credentials', true);
}
здесь не работает порт
app.listen(80, err => {
if (err) {
return console.error(err);
}
console.log(
=====================================================
-> Server (${chalk.bgBlue('Hot reload')}) ? (running) on ${chalk.green(
'localhost',
)}:${chalk.green('80')}
=====================================================
,
);
^^ этот не работал, и chrome удалил порт в URL
изменил порт здесь
app.listen(8080, err => {
if (err) {
return console.error(err);
}
console.log(
=====================================================
-> Server (${chalk.bgBlue('Hot reload')}) ? (running) on ${chalk.green(
'localhost',
)}:${chalk.green('8080')}
=====================================================
,
);
^^ этот работал, и chrome покинул порт в URL
Я ожидал, что CORS разрешит выполнение запросов, даже если порт не указан, но этого не произошло. Я использую сервер node.js, использующий graphql для моего бэкэнда, фреймворк реагирования для моего внешнего интерфейса, а версия cors - "cors": "^ 2.8.4"