Iframe иногда теряет сеансовые куки - PullRequest
1 голос
/ 15 января 2020

Иногда при отправке платежной формы в iframe при обратной передаче из шлюза оплаты пользователь выходит из системы, поскольку в запросе отсутствует ASP .NET_SessionId cook ie (мы используем сервер состояний). Проблема не в утилизации пула приложений, поскольку я проверил эти журналы. Это также происходит только в производственной среде. Я вижу, что сессия Cook ie существует непосредственно перед отправкой формы, поэтому я не могу понять, где она теряет.

1 Ответ

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

Вам необходимо проверить, не затронуты ли вы недавно выпущенным KB4524420:

ASP. NET теперь будет выдавать заголовок SameSite cook ie, когда HttpCook ie Значение .SameSite равно «None» для учета предстоящих изменений в обработке SameSite cook ie в Chrome. В рамках этого изменения файлы cookie FormsAuth и SessionState также будут выдаваться с SameSite = 'Lax' вместо предыдущего значения по умолчанию 'Нет', хотя эти значения могут быть переопределены в web.config.

Вам необходимо установите cookieSameSite = "None" в теге состояния сеанса, чтобы избежать этой проблемы.

<sessionState cookieSameSite="None"  cookieless="false" timeout="360"> 
</sessionState>

Однако в некоторых случаях это нарушит Safari (iOS до v13 и Safari в MacOS), так что вы можете захотеть рассмотреть возможность добавления двух файлов cookie, один с SameSite = None, а другой без указания какого-либо значения для SameSite). Это связано с ошибкой в ​​Safari, из-за которой SameSite = None становится SameSite = Strict.

...