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