Почему файл cookie не отправляется в конечную точку API только на хост-компьютере API?

В моем API есть конечная точка аутентификации A, которая должна возвращать файл cookie аутентификации. Конечной точке B требуется файл cookie аутентификации. После посещения конечной точки A и моя машина разработки, и отдельная тестовая клиентская машина всегда успешно проходят аутентификацию при посещении конечной точки B (на работающей виртуальной машине локальный хост не задействован) в Chrome. Я вижу заголовок печенье в этих запросах к конечной точке B.

Между тем, при посещении действующей конечной точки B с самой виртуальной машины хостинга проверка подлинности выглядит успешной, но Chrome перенаправляется при попытке посетить конечную точку B. В журнале указывается, что файл cookie аутентификации не отправляется в запросе на конечную точку B.

И моя машина разработки, и виртуальная машина получают заголовок set-cookie в ответ при использовании Postman (мне нужно отключить проверку SSL на обеих машинах, чтобы это работало).

Файл cookie выглядит так, хотя я пробовал его без политики домена, безопасности и того же сайта (постепенно):

cName=cValue; expires=Tue, 11 Jun 2019 02:21:06 GMT; domain=.mydomain.net; path=/; secure; samesite=lax

Вопрос: Что может помешать Chrome на виртуальной машине отправить файл cookie? Я попытался настроить атрибуты файла cookie на случай, если проблема была в этом.

Контекст:

  • основная версия asp.net: 2.2
  • Cookie.httpOnly: ложь
  • Cookie.SameSite: я пробовал None и Lax, потому что файл cookie запрашивается из расширения Chrome.
  • Cookie.Secure: я пробовал true и false.
  • Cookie.Domain: я пробовал несколько значений и не устанавливал их.
  • CORS используется и широко открыт.
  • У меня установлен доверенный SSL-сертификат для сайта.
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
823
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Мне нужно было изучить некоторые вещи CORS, чтобы достичь своей цели. Я нашел очень полезный статья MSDN. Короче говоря, потребовались следующие изменения клиента и сервера, чтобы удовлетворить браузер и принимать запросы на сервере по мере необходимости.

Это вызывало мою непосредственную проблему:

  • Для XMLHttpRequest.withCredentials необходимо было установить значение true на стороне клиента, чтобы не игнорировать файл cookie аутентификации в ответе (пункт 2).
  • CorsPolicyBuilder.AllowCredentials() необходимо было вызвать в Configure() в Startup.cs, чтобы получить этот запрос withCredentials.

Что странно, так это то, что без этого он прекрасно работает везде, кроме хостинг-сервера, и я до сих пор не могу этого объяснить.

Другие надоедливые детали, которые мне нужно было исправить, которые могли затуманить проблему:

  • Домен файла cookie должен быть установлен в соответствии с вариантом использования.
  • Атрибут SameSite для Cookie должен быть Lax
  • Использовать Корс()
  • CorsPolicyBuilder.WithOrigins (новая строка [] {"домен-a", "домен-b"})

Другие вопросы по теме

Похожие вопросы

Laravel Auth::guard('employee') -> попытка не работает
Множественная аутентификация .NET Core с авторизацией поставщика динамической политики
Получение несанкционированной html-страницы IIS вместо несанкционированного ответа веб-API для несанкционированного статуса
Каков правильный способ аутентификации от JavaScript в HTML-файле до элемента управления Microsoft Web Chat для Bot Framework v4?
Request.user.is_authenticated работает только на домашней странице
Как обеспечить работу запросов к моим серверам только из одного источника/пользовательского интерфейса?
Microsoft Outlook — добавить запрос на авторизацию с пользовательским параметром
Необходимо сохранить токен доступа, отправленный из бэкэнда (json) в локальное хранилище, и войти в систему, используя этот токен. Как?
Использование олицетворения Windows, но получение ошибок доступа к файлам
Node.js: вернуть данные клиенту с помощью чистого html