Могу ли я установить динамическую политику c cors, которая позволяет только указанным c источникам передавать куки (Node.js)? - PullRequest
0 голосов
/ 06 февраля 2020

Контекст

У меня есть сервер express с двумя типами клиентов.

  1. Мое приложение (React + graphql): I Я включил учетные данные для этого клиента: app.use(cors({ credentials: true, origin: "http://localhost:3000" })); Я установил это так, чтобы я мог получать связанные с аутентификацией куки от моего клиента gql.

  2. Сторонние сервисы (через http-клиент Я предоставляю). Эти запросы могут поступать из любого числа источников.

Я не могу использовать оператор подстановки для orgin (cors({origin: *})), так как это позволит любому сайту использовать аутентификацию моих пользователей печенье. Однако, если я не передам оператор подстановочного знака, сторонние клиенты не смогут отправлять запросы.

Я безуспешно пытался включить подстановочный знак на указанном c маршруте.

Вопрос

Могу ли я установить разные политики Cors для разных источников?

1 Ответ

2 голосов
/ 06 февраля 2020

У вас есть пара вариантов.

  1. Вы можете настроить динамический обработчик c cors, который позволит разрешать происхождение без использования *.
  2. Вы можете получить все, что вам нужно из повара ie и передать его другим способом (например, в качестве параметра запроса).

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

Вот тот, который позволяет всем доменам без использования *:

var corsOptions = {
  origin: function (origin, callback) {
    console.log(`Origin ${origin} is being granted CORS access`);
    callback(null, true)
  }
}

app.use(cors(corsOptions));

Вам также не нужно применять это глобально. Вы можете применить его только к определенным маршрутам или только к определенным маршрутизаторам.

Примеры здесь: https://www.npmjs.com/package/cors в документации к модулю CORS.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...