نحوه ری دایرکت از http به https در Asp.net core
لطفا در مورد اینکه چجوری میشه سایت رو بعد از اینکه روی یک هاست بارگزاری کردیم به https ری دایرکت کنیم راهنمایی کنید.
توضیح :
- سایتم رو با آدرس فرضی زیر روی یک هاست بارگزاری کردم.
https://mysite.ir
- پروتکل SSL هم توسط هاست خریداری کردم و روی هاست فعال هست. و در حال حاضر سایت با https نمایش داده میشه.
توضیح مشکل :
اما مشکل اینجاست که سایت باید بعد از بارگزاری روی هاست فقط و فقط به صورت زیر نمایش داده بشه
https://mysite.ir
اما در حال حاضر سایت با آدرس های زیر هم نمایش داده میشه که این موضوع میتونه باعث بروز خطای 403 بشه و همچنین از نظر سیو میتونه سایت رو ضعیف کنه
http://mysite.ir
www.mysite.ir
http://www.mysite.ir
در واقع میخوام کاربر هر کدوم از Url های بالا رو زد به آدرس اصلی که با https شروع میشه هدایت بشه.
میتونید از Middleware
app.UseHttpsRedirection();
استفاده کنید. روش دوم هم استفاده از Rewriting Middleware هست.
نحوه ری دایرکت از http به https در Asp.net core
همونطوری که در متن سوال هم گفتید موضوع ری دایرکت از http به https اهمیت زیادی داره. از مهم ترین مواردی که برای این کار میشه ذکر کرد اینه که اگر اطلاعاتی که بین سایت شما و کاربر سایت شما از اهمیت بالایی برخوردار باشه مثل درگاههای بانکی یا اطلاعات سایتهایی مثل ثبت احوال و ... شخصی بتونه در این بین این اطلاعات رو شنود کنه عملا اطلاعات سایت و اطلاعات کاربران شما لو میره.
بنابراین لازم هست حتما این ری دایرکت از http به https انجام بشه تا اطلاعات انتقالی از سایت به کلاینت با امنیت بالاتری انجام بشه.
نحوه فعالسازی https
- جهت فعالسازی https ابتدا شما باید از یک شرکت معتبر گواهینامه ssl خریداری کنید و سپس روی هاست و سرور خودتون فعالسازی و نصب کنید.
- در مرحله بعدی باید ssl رو تنظیم یا اصطلاحا کانفیگ کنید.
- و در نهایت یک فایل بک آپ تهیه کنید تا در صورت بروز مشکل برای ssl سریع جایگزین کنید.
معمولا موارد بالا توسط خود شرکت هاست یا شرکتی که گواهینامه ssl از آن خریداری کرده اید انجام می شود.
ری دایرکت از http به https در کنترل پنل plesk یا cpanel
اما موضوع مهم بعدی بحث ری دایرکت از http به https می باشد. یعنی اگر کاربر شما هر کدام از Url های زیر را وارد کرد به Url شامل https هدایت شود
//اشتباه
www.mysite.ir
http://mysite.ir
http://www.mysite.ir
//صحیح
https://mysite.ir
دقت کنید که وظیفه اصلی ری دایرکت از http به https بر عهده خود هاست می باشد و معمولا شرکت های ارائه دهنده خدمات هاستینگ و گواهینامه ssl با انجام تنظیمات این کار را انجام می دهند و معمولا نیازی نیست برنامه نویس کاری انجام دهد.
اما با این حال ممکن است برخی از شرکت های ارائه دهنده هاست این کار را انجام ندهند و برنامه نویس می بایست عملیات ری دایرکت از http به https را انجام دهد.
نحوه ری دایرکت از http به https در Asp.net core
برای اینکه شما بتوانید به عنوان یک برنامه نویس از http به https ری دایرکت انجام دهید موقع ایجاد پروژه باید تیک configure for https را بزنید تا تنظیمات مربوط به https در پروژه شما ایجاد شود.
در حال حاضر فایل appsetting.json شما باید چیزی مشابه با زیر باشد:
{
"ConnectionStrings": {
"MyConnectionString": "Data Source=.;Initial Catalog=DataBasename;user Id=sa;Password=1"
},
"Logging": {
"LogLevel": {
"Default": "Warning"
}
},
"AllowedHosts": "*"
}
خب حالا در کلاس startup.cs و در متد ConfigureServices دستور زی را در انتهای متد اضافه کنید
var optRewrite = new RewriteOptions().AddRedirectToHttpsPermanent();
اکنون به متد Configure بیابید و دستورات زیر را اضافه کنید :
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
app.UseHsts();
}
//
app.UseHttpsRedirection();
app.Use(async (context, next) =>
{
string sHost = context.Request.Host.HasValue == true ? context.Request.Host.Value : ""; //domain without :80 port .ToString();
sHost = sHost.ToLower();
string sPath = context.Request.Path.HasValue == true ? context.Request.Path.Value : "";
string sQuerystring = context.Request.QueryString.HasValue == true ? context.Request.QueryString.Value : "";
if (!context.Request.IsHttps)
{
string new_https_Url = "https://" + sHost;
if (sPath != "")
{
new_https_Url = new_https_Url + sPath;
}
if (sQuerystring != "")
{
new_https_Url = new_https_Url + sQuerystring;
}
context.Response.Redirect(new_https_Url);
return;
}
if (sHost.IndexOf("www.") == 0)
{
string new_Url_without_www = "https://" + sHost.Replace("www.", "");
if (sPath != "")
{
new_Url_without_www = new_Url_without_www + sPath;
}
if (sQuerystring != "")
{
new_Url_without_www = new_Url_without_www + sQuerystring;
}
context.Response.Redirect(new_Url_without_www);
return;
}
await next();
});
//
app.UseSession();
app.UseStaticFiles();
app.UseAuthentication();
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
app.UseCookiePolicy();
}
در کدهای بالا همه حالات خطا که در بالا گفته شد بررسی شده و در صورتی که هر کدام از Url های اشتباه وارد شود به Url صحیح که با https شروع می شود تبدیل می شود.
- آموزش استفاده از SignalR در Asp.net Core با مثال عملی
- ادغام چند گزارش استیمول سافت بصورت پی دی اف در یک فایل
- نحوه تغییر استایل کامپوننت select2 چگونه است ؟
- چگونه امنیت پروژه را در Asp.net Core افزایش دهیم ؟
- ارسال پارامتر در دستور window.open جی کویری
- ارسال پارامتر از طریق جاوااسکریپت با کلیک روی تگ a
- خطای 500 زمان اجرا شدن پروژه روی هاست
- کویری نویسی در استیمول سافت جهت فیلتر اطلاعات
- نمایش صفحه در پنجره جدید با کلیک روی لینک (تگ a) در Asp
- افزودن مقادیر به صورت دستی به List دریافت شده از ریپازیتوری
- کار با CkEditor با قابلیت آپلود عکس
- خطا در ایجاد migration در Asp.net core
- تفاوت های Asp.net core و Asp.net mvc چیه؟
- دلیل اسپم شدن ایمیل های ارسالی از سرور
- نحوه لایه بندی پروژه Core و اضافه کردن به IIS
- ارسال ایمیل در Asp.net core
- آیا میشه در mvc core از کامپونت استفاده کرد
- آپلود فایل در Asp.net core چگونه است؟
- حذف کامل یک رکورد در جدول ریلیشن شده
- اشکال در آپلود فایل ویدیو در mvc core 2