از نسخه .NET Framework 4.7.2 به بعد امکان تنظیم ویژگی sameSite روی کوکی (Cookie) فراهم شده است. تا قبل از این بروزرسانی، مقدار هدر کوکی sameSite تنظیم نمی شده است که در حقیقت معادل SameSiteMode.None می باشد ولی از ورژن ذکر شده به بعد مقدار پیش فرض هدر کوکی sameSite وقتی مقداری برای آن تنظیم نشود، به صورت پیش فرض مقدار SameSiteMode.Lax درنظر گرفته می شود.
این تغییر مقدار پیش فرض باعث شده است تا ارسال اطلاعات از سایتهای دیگر (مثلا درگاههای پرداخت اینترنتی بانکها) به سایت مبدا با مشکل مواجه شود.
تغییر مقدار پیش فرض ویژگی SameSite برای کوکی باعث می شود تا سایتهای دیگر
وقتی به سایت اصلی از طریق متد POST اطلاعات ارسال می کنند،
در Request ارسالی، کوکی مربوط به ASP.NET_SessionId در دسترس درخواست ارسال شده از سایت مزبور نباشد و در
نتیجه Session جدیدی ایجاد می شود که این امر باعث می شود موقعی که کاربر از سمت درگاه
بانکی به سایت اصلی برمی گردد با صفحه لاگین مواجه شود.
با توجه به شیوه عمل درگاههای بانکی، برای حل این مشکل لازم است تا در تگ
sessionState در web.config اصلی سایت، ویژگی cookieSameSite مقدار None
بگیرد تا امکان POST کردن اطلاعات درگاه بانکی از طریق Session فعلی کاربر به سایت
مبدا امکانپذیر باشد (همانند نسخه های قبلی .net):
<sessionState ... cookieSameSite="None"
/>
بروزرسانی 1:
مرورگر کروم از نسخه 80 به بعد انتظار دارد کوکیهایی که برای آنها SameSite="None" برای آنها تنظیم شده، پرچم secure هم برای آنها تنظیم شده باشد. در غیر اینصورت کوکی مربوطه را بلاک می کند و در بخش کنسول پیغام زیر را نمایش می دهد:
A cookie associated with a resource at http://domain.tld/ was set with `SameSite=None` but without `Secure`.
It has been blocked, as Chrome now only delivers cookies marked `SameSite=None` if they are also marked `Secure`.
You can review cookies in developer tools under Application>Storage>Cookies and see more details at https://www.chromestatus.com/feature/5633521622188032.
در نتیجه لازم است برای سایت خود SSL تهیه کنید و در web.config ویژگی requireSSL="true" را به تگ httpCookies اضافه کنید:
<httpCookies httpOnlyCookies="true" domain=".domain.tld" requireSSL="true" />
برای توضیحات بیشتر راجع به ویژگی SameSite در کوکی به صفحات زیر مراجعه کنید:
ASP .Net, Cookie SameSite, SessionState, درگاه پرداخت اینترنتی