Cross-Origin Resource Sharing (CORS) — это механизм, который позволяет веб-приложениям получать доступ к ресурсам из разных доменов. В Node.js CORS обычно используется для предоставления веб-приложениям, работающим в одном домене, доступа к ресурсам, расположенным в другом домене. В этом сообщении блога мы обсудим лучшие практики использования CORS в Node.js.

  1. Установите пакет промежуточного программного обеспечения CORS

Чтобы включить CORS в вашем приложении Node.js, вам необходимо установить пакет промежуточного программного обеспечения CORS. Вы можете установить его с помощью npm, выполнив следующую команду:

npm install cors

2. Включите CORS в своем приложении Node.js.

После установки пакета промежуточного программного обеспечения CORS вы можете включить CORS в своем приложении Node.js, запросив пакет и вызвав его в качестве промежуточного программного обеспечения в своем приложении.

const express = require('express');
const cors = require('cors');
const app = express();
app.use(cors());

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

const express = require('express');
const cors = require('cors');
const app = express();
app.get('/products', cors(), function (req, res, next) {
  res.json({msg: 'This route has CORS enabled'});
});

3. Установите параметры CORS.

Вы можете установить параметры промежуточного программного обеспечения CORS, чтобы управлять включением CORS в вашем приложении Node.js. Некоторые из параметров, которые вы можете установить, включают:

  • origin: указывает домены, которым разрешено отправлять запросы к вашему приложению Node.js. Вы можете установить его для определенного домена или для массива доменов.
app.use(cors({
  origin: 'http://example.com'
}));
  • methods: указывает методы HTTP, разрешенные для запросов CORS. Вы можете установить его на определенный метод или на массив методов.
app.use(cors({
  methods: ['GET', 'POST', 'PUT', 'DELETE']
}));
  • allowedHeaders: указывает заголовки, разрешенные в запросах CORS. Вы можете установить его на определенный заголовок или на массив заголовков.
app.use(cors({
  allowedHeaders: ['Authorization', 'Content-Type']
}));
  • exposedHeaders: указывает заголовки, которые доступны клиенту. Вы можете установить его на определенный заголовок или на массив заголовков.
app.use(cors({
  exposedHeaders: ['Authorization']
}));

4. Используйте предварительные запросы

При отправке запросов CORS с определенными методами или заголовками браузер автоматически отправляет предварительный запрос на сервер, чтобы проверить, разрешен ли запрос. Чтобы обрабатывать предварительные запросы в приложении Node.js, вы можете добавить маршрут параметров и ответить соответствующими заголовками CORS.

app.options('/products', cors());
app.post('/products', cors(), function (req, res, next) {
  res.json({msg: 'This route has CORS enabled with preflight request handling'});
});

5. Используйте файлы cookie с CORS

По умолчанию файлы cookie не отправляются в запросах CORS. Если вы хотите отправлять файлы cookie с запросами CORS, вам необходимо установить для параметра учетных данных значение true в промежуточном программном обеспечении CORS.

app.use(cors({
  credentials: true
}));

6. Защитите свое приложение Node.js

Включение CORS в вашем приложении Node.js может подвергнуть ваше приложение уязвимостям безопасности. Чтобы защитить свое приложение, вы можете использовать следующие методы:

  • Используйте HTTPS для шифрования трафика между клиентом и сервером.
  • Используйте защиту CSRF для предотвращения атак с подделкой межсайтовых запросов.
  • Используйте ограничение скорости, чтобы предотвратить атаки грубой силы.
  • Используйте аутентификацию и авторизацию для управления доступом к вашему приложению.

В заключение, использование CORS в вашем приложении Node.js может стать мощным инструментом для обеспечения междоменной связи. Однако важно понимать последствия включения CORS для безопасности и следовать рекомендациям по обеспечению безопасности вашего приложения. Следуя советам и методам, изложенным в этом сообщении блога, вы можете убедиться, что ваше приложение Node.js является безопасным и функциональным при использовании CORS.