Как ограничить доступ к моей конечной точке graphql с помощью Cors или любого другого модуля узла - PullRequest
0 голосов
/ 29 марта 2020

Я работаю над React / NodeJS, я использую graphql между передней и задней частью.

В моем приложении PWA для внешнего интерфейса есть ссылка, аналогичная: https://app.domain.com.

Мой бэкэнд-API имеет ссылку, аналогичную следующей: https://api.domain.com.

Я хочу защитить свою конечную точку GraphQL (https://api.domain.com/graphql) из любого запроса, который не поступил из моего приложения PWA (https://app.domain.com).

Есть ли какое-нибудь хорошее решение для этого? используя CORS или любую другую библиотеку?

Я пробовал это в своем бэкэнде, но все еще не работает:

app.use(cors({origin:'https://app.domain.com'}));


//My graphql config
app.use("/graphql",
  graphqlExpress(req => ({
    schema: buildSchema(schema),
    rootValue: indexResolver,
    graphiql: true,
    context: { request: req }
  }))
);

1 Ответ

1 голос
/ 29 марта 2020

Я нашел решение

const allowedOrigins = ['https://app.domain.com'];

app.use(cors({
  origin: function (origin, callback) {
    if (allowedOrigins.indexOf(origin) === -1) {
      var msg = 'The CORS policy for this site does not ' +
        'allow access from the specified Origin.';
      return callback(new Error(msg), false);
    }
    return callback(null, true);
  }
}));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...