Cook ie Свойство SameSite работает на localhost, но не после публикации на сервере - PullRequest
0 голосов
/ 19 июня 2020

Я использовал ASP MVC с. NET 4.7.2, чтобы установить Cook ie на стороне сервера со следующим кодом:

            ClientCookie = new HttpCookie("SuperCookie");
            ClientCookie.Value = dbNewCustomerCookie.CustomerCookieID.ToString(); // new inserted DB value
            ClientCookie.Expires = DateTime.Now.AddYears(2);
            ClientCookie.HttpOnly = true;
            ClientCookie.Secure = true;
            ClientCookie.Shareable = true;
            ClientCookie.SameSite = SameSiteMode.None;
            Response.SetCookie(ClientCookie);
            Response.Flush();

На локальном хосте это работает нормально, а для SameSite установлено значение None, после отправки этого параметра на сервер флаг SameSite сбрасывается после каждого запроса. И локальный хост, и серверная версия работают по HTTPS. Проверено. NET версия на сервере, удалили повар ie для воссоздания, попробовали с другими настройками web.config на сервере, также попробовали с модулем перезаписи URL, но ничего не сработало.

enter image description here

Could this be a code issue or server/host issue ? We are using Amazon (private servers with access to IIS) to host our websites.

UPDATE : running the site on server localhost keeps returning SameSite as empty, while development machine returns always SameSite set as None. Both machines have .NET 4.7.2 installed, are running with the same web.config over IIS 7.

UPDATE 2 : if I set ClientCookie.SameSite = SameSiteMode.Lax then it will also work for server requests; but won't work to set the mode to SameSiteMode.None. With Lax mode the cookie is not created for cross-site requests, which is required because I call the website from an iframe.

UPDATE 3 : I think the reason of this is that the server is not updated with the latest functionality that support the samesite as none : https://docs.microsoft.com/en-us/aspnet/samesite/kbs-samesite, так как компания не будет обновлять сервер (внутренняя политика), я попробую установить повар ie со стороны клиента

1 Ответ

0 голосов
/ 25 июня 2020

Если сервер не поддерживает значение атрибута SameSite=None, вы можете попробовать отправить заголовок Set-Cookie напрямую.

Response.AppendHeader("Set-Cookie",
  "SuperCookie=" + dbNewCustomerCookie.CustomerCookieID.ToString()
  + "; Max-Age=63113904"
  + "; HttpOnly"
  + "; Secure"
  + "; SameSite=None"
);
...