#c# #asp.net #samesite
#c# #asp.net #тот же сайт
Вопрос:
Из-за последних обновлений в Google Chrome. На моем веб-сайте не может истекать срок действия файлов cookie в Google Chrome версии 84. получаю следующее предупреждение
Согласно некоторым моим исследованиям, атрибуты cookie Secure и SameSite должны быть обновлены на false и None соответственно.
Проблема в том, что атрибут SameSite недоступен в c # dot net 4.5.2
HttpCookie cookie = new HttpCookie(name);
cookie.Secure = true;
Как я могу этого добиться. Заранее спасибо.
Комментарии:
1. Библиотека Net поддерживает стандартные и нестандартные заголовки HTTP. Например, UserAgent является стандартным заголовком, в то время как SameSite является нестандартным. Поэтому вам нужно добавить другой заголовок к вашему запросу.
Ответ №1:
Вы должны предоставить вашему запросу новый уникальный идентификатор. Когда вы используете заголовок по умолчанию, браузеры думают отправить тот же запрос на сервер. Но когда вы дадите уникальный заголовок вашему запросу, ваша проблема будет решена. Все запросы будут разными.
Посмотрите эти коды, вы можете найти больше в заголовках Set-Cookie.
public void ProcessRequest(HttpContext context)
{
HttpRequest request = context.Request;
HttpResponse response = context.Response;
// If ClearHeaders is used Set-Cookie header gets removed!
// if commented header is sent...
response.ClearHeaders();
response.ClearContent();
// Demonstrate that other headers make it
response.AppendHeader("RequestId", "asdasdasd");
// This cookie gets removed when ClearHeaders above is called
// When ClearHEaders is omitted above the cookie renders
response.AppendHeader("Set-Cookie", "WWTHREADSID=ThisIsThEValue; path=/");
// *** This always works, even when explicit
// Set-Cookie above fails and ClearHeaders is called
//response.Cookies.Add(new HttpCookie("WWTHREADSID", "ThisIsTheValue"));
response.Write(@"Output was created.<hr/>
Check output…");
}
Комментарии:
1. Вы можете сделать это разными способами, этот код — всего лишь простой пример.