Как я могу сделать так, чтобы мое внешнее приложение получало доступ к моему серверу узла apis

Я создал внешнее приложение от создать-реагировать-приложение.
Команда "запуск запуска нпм" может создать сервер webpack-dev и обслуживать мои
интерфейсное приложение для разработки. Вот такая проблема:

  1. Мое клиентское приложение должно запросить некоторое количество API из узловой сервер, которое я создал ранее.
  2. По умолчанию приложение create-реагировать запускает сервер webpack-dev на порт 3000.
  3. Мой сервер узла был запущен на порт 3001
  4. Прямой доступ к порту 3001 может вызвать проблемы с перекрестным происхождением

Как я могу изящно начать свою развивающую историю с этих проблем!

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
457
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Есть два способа решить проблемы с перекрестным происхождением на сервере узла:

  1. Использование модуля узла cors

Сначала установите модуль cors. npm install cors

а затем используйте его внутри своего приложения

const Express       = require("express");
const BodyParser    = require("body-parser");
const Cors          = require("cors");

const app = Express();
app.use(Cors());

app.use(BodyParser.urlencoded({ extended: false }));
app.use(BodyParser.json());

app.listen(3001, 'localhost', (err) => {
    if (err) {
        console.info(err);
        process.exit(-1);
    }
    console.info("Server listen port 8083");
});
  1. просто используйте следующие заголовки
app.use(function (req, res, next) {
    res.header("Access-Control-Allow-Origin", "*");
    res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
    res.header("Access-Control-Allow-Methods", "GET, POST, OPTIONS, PUT, DELETE");
    next();
});

Простой способ справиться с CORS с серверной частью NodeJS — использовать промежуточное ПО ExpressJS и расширение «cors», как подробно описано в документации ExpressJS:

Руководство по CORS для ExpressJS

В целях тестирования существуют различные расширения браузера, которые автоматически реализуют заголовки CORS во всех ваших запросах (Access-Control-Allow-Origin, Access-Control-Allow-Methods). , Access-Control-Allow-Headers). Использование этого расширения делает все ваши запросы из браузера включенными CORS (НЕ ПОДХОДИТ ДЛЯ ПРОИЗВОДСТВА, ТОЛЬКО ДЛЯ ТЕСТА/РАЗРАБОТКИ).

Обратите внимание, что так называемые «простые запросы», использующие только GET/HEAD/POST и следующие типы контента: application/x-www-form-urlencoded, multipart/form-data, text/plain, не запускают предварительный запрос CORS. так они разрешены.

Для общего понимания CORS я бы обратился к документам Mozilla MDN:

Руководство Mozilla MDN CORS

Самый простой способ решить проблемы с CORS — использовать модуль npm для cors. Установите его в свой проект, используя:

npm i cors

Затем включите его в свой файл app.js следующим образом:

const cors = require('cors');

а затем используйте его в качестве промежуточного программного обеспечения в вашем app.js следующим образом:

app.use(cors());

И это должно сделать! Надеюсь это поможет!!

Другие вопросы по теме