#javascript #node.js #api #cors #rest
#JavaScript #node.js #API #cors #остальное
Вопрос:
У меня есть rest API, который имеет много конечных точек для получения и отправки данных. Мне было интересно, можно ли изменить, с какого источника будет взаимодействовать конкретная конечная точка. Ниже вы можете видеть, что у меня включен стандартный CORS во всем приложении:
app.use((req, res, next) => {
res.header('Access-Control-Allow-Headers', '*');
res.header('Access-Control-Allow-Origin', '*');
next();
});
Но я хочу иметь возможность изменять свойства CORS отдельных конечных точек:
app.get('/api/blocks/length', (req, res) => {
res.json(blockchain.chain.length);
});
Как это можно сделать? Некоторое понимание будет означать для меня мир.
Комментарии:
1.
const cors = require('cors'); app.get('/api/blocks/length', cors(), (req, res) => {});
Ответ №1:
Функция, которую вы передаете app.use
, является функцией промежуточного программного обеспечения. Давайте разберем это, чтобы сохранить компоненты размером с кусочек.
const cors_middleware = (req, res, next) => {
res.header('Access-Control-Allow-Headers', '*');
res.header('Access-Control-Allow-Origin', '*');
next();
};
(Хотя это переосмысление колеса, вы могли бы просто использовать cors
модуль из NPM)
Тогда вы получите свой оригинальный эффект следующим образом:
app.use(cors_middleware);
Теперь посмотрим на определение get
:
app.get(path, callback [, callback ...])
Требуется список из одного или нескольких обратных вызовов.
Таким образом, вы можете поместить туда свое промежуточное программное обеспечение:
app.get('/api/blocks/length', cors_middleware, (req, res) => {
res.json(blockchain.chain.length);
});
Комментарии:
1. Я понимаю. Итак, я могу определить более одного промежуточного программного обеспечения и использовать его в конечных точках, если это необходимо?