Как я должен использовать Access-Control-Allow-Headers?

Я создаю бэкенд на Django, который принимает запросы от других доменов, поэтому я использую django-cors-headers для обработки CORS. Однако я столкнулся с проблемой, когда один из внешних доменов обращается к моему бэкенду, потому что их код запроса a) устанавливает withCredentials и b) имеет некоторые дополнительные заголовки в запросе.

Оба этих пункта не должны иметь значения для того, чтобы они могли попасть в мой бэкенд, но я получаю ожидаемые ошибки Access-Control-Allow-Credentials' header in the response is '' which must be 'true' и Request header field [field_name] is not allowed by Access-Control-Allow-Headers in preflight response. Некоторые другие сообщения на stackoverflow указали мне на Access-Control-Allow-Credentials = 'true' для первого и Access-Control-Allow-Headers = '*' для второго, но я не смог найти много информации о том, какова лучшая практика.

Что я пытаюсь выяснить, так это

  • Безопасно ли устанавливать оба этих флага? Есть и другие заголовки, включенные в запрос, которые обрабатывают аутентификацию с помощью токенов, поэтому я не уверен, что здесь есть большой риск для безопасности
  • .
  • Должен ли я вместо этого сказать своим пользователям, что мой бэкенд запрещает учетные данные и другие заголовки (потому что они не нужны для работы кода)?
  • В документации по Access-Control-Allow-Headers указано ‘The value “*” only counts as a special wildcard value for requests without credentials (requests without HTTP cookies or HTTP authentication information). In requests with credentials, it is treated as the literal header name “*” without special semantics. Note that the Authorization header can’t be wildcarded and always needs to be listed explicitly.’ Правильно ли я понимаю, что я не смогу установить и Access-Control-Allow-Credentials = true, и Access-Control-Allow-Headers = '*'?
  1. См. мой ответ на ваш 3-й пункт.
  2. Да. Ваш сервер, ваши правила.
  3. Устанавливать и Access-Control-Allow-Credentials: true и Access-Control-Allow-Headers: * никогда не полезно:
Вернуться на верх