اشتراکها
شروع به کار با TypeScript
اشتراکها
زبان AtScript
با توجه به سری مقالههای مرتبط، آیا KendoUI یا jEasyUI هم قابل استفاده با Angular و Typescript بصورت یک کتابخانه ثالث هست.
با سلام.
در کنترلر ، چگونه $watch مربوط به شی $scope را بوسیله TypeScript میتوان فراخوانی کرد؟
نظرات مطالب
آموزش TypeScript #1
با سلام.
- برای پروژههای بزرگ تحت وب که کدهای سمت کلاینت زیادی دارد استفاده از typescript را پیشنهاد میکنید؟
به همراه هر درخواستی از سرور چه از طرف کلاینت و چه از طرف سرور، یک سری header نیز ارسال میشود. برای مثال مرورگر، نوع خود را به همراه یک سری از قابلیتهای مربوطه مانند الگوریتمهای فشرده سازی پشتیبانی شده به سرور ارسال میکند و در مقابل وب سرور هم یک سری هدر را مانند مدت زمان کش کردن اطلاعات دریافتی، نوع و نگارش سرور و امثال آن، به کلاینت ارسال خواهد کرد.
از دیدگاه امنیتی این اطلاعات اضافی هستند. برای مثال از تصویر زیر (که با استفاده از افزونهی فایرباگ تهیه شده) دقیقا میتوان وب سرور، نگارش آن و بسیاری از موارد دیگر را به سادگی تشخیص داد. در ادامه میخواهیم این هدرهای اضافی را حذف کنیم.
امکان تغییر و حذف هدرهای مربوط به response تنها با استفاده از امکانات IIS7 میسر است (در حالت integrated pipeline) و IIS6 چنین اجازهای را به ASP.Net نمیدهد.
برای این منظور یک پروژهی جدید، به نام SecurityMdl از نوع class library را ایجاد کرده و دو فایل SecurityMdl.cs و CRemoveHeader.cs را به آن اضافه خواهیم کرد:
//SecurityMdl.cs
using System;
using System.Web;
namespace SecurityMdl
{
public class SecurityMdl : IHttpModule
{
public void Init(HttpApplication app)
{
app.PreSendRequestHeaders += app_PreSendRequestHeaders;
}
static void app_PreSendRequestHeaders(object sender, EventArgs e)
{
CRemoveHeader.CheckPreSendRequestHeaders(sender);
}
public void Dispose() { }
}
}
در این Http module ، با تغییر اطلاعات دریافتی در روال رخداد گردان PreSendRequestHeaders میتوان به مقصود رسید:
//CRemoveHeader.cs
using System;
using System.Collections.Generic;
using System.Web;
namespace SecurityMdl
{
class CRemoveHeader
{
private static readonly List<string> _headersToRemoveCache
= new List<string>
{
"X-AspNet-Version",
"X-AspNetMvc-Version",
"Server"
};
public static void CheckPreSendRequestHeaders(Object sender)
{
//capture the current request
var currentResponse = ((HttpApplication)sender).Response;
//removing headers
//it only works with IIS 7.x's integrated pipeline
_headersToRemoveCache.ForEach(h => currentResponse.Headers.Remove(h));
//modify the "Server" Http Header
currentResponse.Headers.Set("Server", "Test");
}
}
}
و نهایتا برای استفاده از آن (علاوه بر افزودن ارجاعی به این ماژول جدید) چند سطر زیر را باید به وب کانفیگ برنامه اضافه کرد:
<system.webServer>
<modules>
<add name="SecurityMdl" type="SecurityMdl.SecurityMdl, SecurityMdl"/>
</modules>
با استفاده از این روش تمامی هدرهای مورد نظر بجز هدری به نام X-Powered-By حذف خواهند شد. برای حذف هدر مربوط به X-Powered-By که توسط خود IIS مدیریت میشود باید موارد زیر را به web.config برنامه اضافه کرد:
<system.webServer>
<httpProtocol>
<customHeaders>
<remove name="X-Powered-By"/>
</customHeaders>
</httpProtocol>
اکنون پس از این تغییرات حاصل کار و هدر نهایی دریافت شده از response یک برنامهی ASP.net به شکل زیر درخواهد آمد:
برای مطالعهی بیشتر
Remove the X-AspNet-Version header
Cloaking your ASP.NET MVC Web Application on IIS 7
IIS 7 - How to send a custom "Server" http header
Removing Unnecessary HTTP Headers in IIS and ASP.NET
Remove X-Powered-By: ASP.NET HTTP Response Header
نظرات مطالب
C# 7 - Binary literals and digit separators
یک نکتهی تکمیلی: «TypeScript 2.7: Numeric Separators»
یک چنین قابلیتی به TypeScript 2.7 هم اضافه شدهاست:
یک چنین قابلیتی به TypeScript 2.7 هم اضافه شدهاست:
const worldPopulationIn2017 = 7_600_000_000; const leastSignificantByteMask = 0b1111_1111; const papayawhipColorHexCode = 0xFF_EF_D5;