Корс охранный с печеньем - PullRequest
0 голосов
/ 30 января 2020

Мне нужно отправить куки между пользователями и моим сервером (node.js), для использования http-запросов из браузера мне нужно установить заголовок Access-Control-Allow-Origin в значение '*' (разрешить для всех) и для использования cook ie мне нужно отправить запрос от пользователя с параметром запроса: withCredentials: true и отправить ответ с заголовком Access-Control-Allow-Credentials как true , но для использования этого заголовка мне нужно установить точный протокол + домен + порт в заголовке Access-Control-Allow-Origin . Купите, как я могу использовать точный домен и порт, если это приложение предназначено для всех людей.

Что мне нужно сделать для нормальной работы?

Ответы [ 2 ]

2 голосов
/ 31 января 2020

Вы можете прочитать заголовок запроса Origin (автоматически добавляемый браузерами) и вернуть его значение обратно как значение Access-Control-Allow-Origin.

Вам нужно быть очень осторожным, чтобы убедитесь, что вы не используете cookie-файлы таким образом, чтобы злонамеренный сторонний сайт вызывал проблемы у вас или ваших пользователей, когда ваши пользователи посещают их веб-сайт (у которого есть разрешение от CORS на доступ к вашему сайту с учетными данными).

2 голосов
/ 31 января 2020

Прежде всего, спецификация CORS явно приняла решение ограничить комбинацию сервера, разрешающую все источники и учетные данные в одном запросе. Если вы настроите свой сервер таким образом, вы откроете своих клиентов для потенциальных CSRF-атак, а это значит, что вредоносные веб-сайты могут использовать куки ваших клиентов / пользователей, чтобы поразить ваш API и украсть их данные. Не очень хорошая ситуация. Спросите себя, почему вам нужен повар ie для выполнения запроса, и если нет лучшего решения, такого как маршрутизация всех запросов через указанный c интерфейс.

Чтобы настроить это, вы можете использовать пакетные пакеты npm и установить corsOptions = { origin: true } согласно документам . Это будет использовать заголовок «Origin» запросов в качестве разрешенного источника в ответе.

Опять же, это ужасная идея, но если вы можете оправдать это и знать, почему вы это делаете, это ваш API.

...