اندازهی قلم متن
تخمین مدت زمان مطالعهی مطلب:
یک دقیقه
دو آدرس www.site.com و site.com را درنظر بگیرید. در حالت متداول، هر دو به یک معنا هستند و هر دو به ریشه یک سایت اشاره میکنند؛ اما از دیدگاه مسایل اعتبار سنجی، خیر. کوکیهای این دو یکسان نبوده و برای کاربران مشکل ساز خواهند شد. کاربری که از طریق آدرس site.com به سایت وارد شده، زمانیکه به لینک مفروض www.site.com وارد میشود (مثلا یکی از کاربران در بین مطالب ارسالی به این آدرس لینک داده) دیگر حالت لاگین قبلی خود را نخواهد داشت و به این ترتیب تصور میکند که سایت باگ دارد.
برای رفع این مشکل میتوان کلیه کاربرانی را که به آدرس site.com وارد میشوند، به صورت خودکار به آدرس www دار آن هدایت کرد و مدیریت آدرسهای سایت را یک دست و یکنواخت نمود:
و برای استفاده از آن در فایل global.asax.cs برنامه خواهیم داشت:
برای رفع این مشکل میتوان کلیه کاربرانی را که به آدرس site.com وارد میشوند، به صورت خودکار به آدرس www دار آن هدایت کرد و مدیریت آدرسهای سایت را یک دست و یکنواخت نمود:
using System.Web.Mvc; namespace WebToolkit { /// <summary> /// Ensure all of the asp.net mvc urls have www. /// </summary> public class MandatoryWww : ActionFilterAttribute { public override void OnActionExecuting(ActionExecutingContext filterContext) { if (!filterContext.RequestContext.HttpContext.Request.IsLocal) { string url = filterContext.RequestContext.HttpContext.Request.Url.AbsoluteUri.ToLowerInvariant(); if (!url.Contains("www")) { url = url.Replace("http://", "http://www."); url = url.Replace("https://", "https://www."); filterContext.Result = new RedirectResult(url, true); } } base.OnActionExecuting(filterContext); } } }
public static void RegisterGlobalFilters(GlobalFilterCollection filters) { filters.Add(new MandatoryWww()); }