Necromancing।
প্রদত্ত উত্তরগুলি অসম্পূর্ণ।
প্রথমে যেমন আগেই বলা হয়েছে, আপনি একাধিক অনুমতি হোস্ট যোগ করতে পারবেন না, এটি সমর্থিত নয়।
দ্বিতীয়ত, আপনাকে এইচটিটিপি রেফারারের কাছ থেকে গৌণিকভাবে সেই মানটি বের করতে হবে, যার অর্থ আপনি ওয়েবকনফিগে মানটি যুক্ত করতে পারবেন না কারণ এটি সর্বদা একই মান হয় না।
ব্রাউজারটি যখন Chrome থাকে তখন অনুমতি যোগ করা এড়াতে ব্রাউজার-শনাক্তকরণ করা প্রয়োজন (এটি ডিবাগ - কনসোলে একটি ত্রুটি তৈরি করে যা দ্রুত কনসোলটি পূরণ করতে পারে, বা অ্যাপ্লিকেশনটি ধীর করে দিতে পারে)। এর অর্থ হ'ল আপনাকে এএসপি.এনইটি ব্রাউজার সনাক্তকরণ সংশোধন করতে হবে, কারণ এটি এজকে ক্রম হিসাবে ভুলভাবে চিহ্নিত করে।
এটিএসপি.এনইটি তে এইচটিটিপি-মডিউল লিখে প্রতিটি অনুরোধে চলতে পারে যা অনুরোধের রেফারারের উপর নির্ভর করে প্রতিটি প্রতিক্রিয়ার জন্য একটি এইচটিপি-শিরোনাম যুক্ত করে। ক্রোমের জন্য এটির জন্য বিষয়বস্তু-সুরক্ষা-নীতি যুক্ত করা দরকার।
public class BrowserInfo
{
public System.Web.HttpBrowserCapabilities Browser { get; set; }
public string Name { get; set; }
public string Version { get; set; }
public string Platform { get; set; }
public bool IsMobileDevice { get; set; }
public string MobileBrand { get; set; }
public string MobileModel { get; set; }
public BrowserInfo(System.Web.HttpRequest request)
{
if (request.Browser != null)
{
if (request.UserAgent.Contains("Edge")
&& request.Browser.Browser != "Edge")
{
this.Name = "Edge";
}
else
{
this.Name = request.Browser.Browser;
this.Version = request.Browser.MajorVersion.ToString();
}
this.Browser = request.Browser;
this.Platform = request.Browser.Platform;
this.IsMobileDevice = request.Browser.IsMobileDevice;
if (IsMobileDevice)
{
this.Name = request.Browser.Browser;
}
}
}
}
void context_EndRequest(object sender, System.EventArgs e)
{
if (System.Web.HttpContext.Current != null && System.Web.HttpContext.Current.Response != null)
{
System.Web.HttpResponse response = System.Web.HttpContext.Current.Response;
try
{
response.AppendHeader("P3P", "CP=\\\"IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT\\\"");
if (System.Web.HttpContext.Current.Request.UrlReferrer != null)
{
string host = System.Web.HttpContext.Current.Request.UrlReferrer.Scheme + System.Uri.SchemeDelimiter
+ System.Web.HttpContext.Current.Request.UrlReferrer.Authority
;
string selfAuth = System.Web.HttpContext.Current.Request.Url.Authority;
string refAuth = System.Web.HttpContext.Current.Request.UrlReferrer.Authority;
if (IsHostAllowed(refAuth))
{
BrowserInfo bi = new BrowserInfo(System.Web.HttpContext.Current.Request);
if (!System.StringComparer.OrdinalIgnoreCase.Equals(bi.Name, "Chrome"))
response.AppendHeader("X-Frame-Options", "ALLOW-FROM " + host);
System.Collections.Generic.List<string> ls = new System.Collections.Generic.List<string>();
ls.Add("default-src");
ls.Add("'self'");
ls.Add("'unsafe-inline'");
ls.Add("'unsafe-eval'");
ls.Add("data:");
ls.Add(selfAuth);
ls.Add(refAuth);
string contentSecurityPolicy = string.Join(" ", ls.ToArray());
response.AppendHeader("Content-Security-Policy", contentSecurityPolicy);
}
else
{
response.AppendHeader("X-Frame-Options", "SAMEORIGIN");
}
}
else
response.AppendHeader("X-Frame-Options", "SAMEORIGIN");
}
catch (System.Exception ex)
{
System.Console.WriteLine(ex.Message);
}
}
}
private static string[] s_allowedHosts = new string[]
{
"localhost:49533"
,"localhost:52257"
,"vmcompany1"
,"vmcompany2"
,"vmpostalservices"
,"example.com"
};
public static bool IsHostAllowed(string host)
{
return Contains(s_allowedHosts, host);
}
public static bool Contains(string[] allowed, string current)
{
for (int i = 0; i < allowed.Length; ++i)
{
if (System.StringComparer.OrdinalIgnoreCase.Equals(allowed[i], current))
return true;
}
return false;
}
আপনাকে এইচটিটিপি-মডিউল ইন্স ফাংশনে কনটেক্সট_এন্ডআরউয়েস্ট ফাংশনটি নিবন্ধিত করতে হবে।
public class RequestLanguageChanger : System.Web.IHttpModule
{
void System.Web.IHttpModule.Dispose()
{
}
void System.Web.IHttpModule.Init(System.Web.HttpApplication context)
{
context.EndRequest += new System.EventHandler(context_EndRequest);
}
}
এর পরে আপনাকে আপনার অ্যাপ্লিকেশনটিতে মডিউল যুক্ত করতে হবে। আপনি এই জাতীয়ভাবে HTTP অ্যাপ্লিকেশনটির আরম্ভ ফাংশনটিকে ওভাররাইড করে গ্লোবাল.অ্যাসাক্সে এই প্রোগ্রামটিমেটি করতে পারেন:
namespace ChangeRequestLanguage
{
public class Global : System.Web.HttpApplication
{
System.Web.IHttpModule mod = new libRequestLanguageChanger.RequestLanguageChanger();
public override void Init()
{
mod.Init(this);
base.Init();
}
protected void Application_Start(object sender, System.EventArgs e)
{
}
protected void Session_Start(object sender, System.EventArgs e)
{
}
protected void Application_BeginRequest(object sender, System.EventArgs e)
{
}
protected void Application_AuthenticateRequest(object sender, System.EventArgs e)
{
}
protected void Application_Error(object sender, System.EventArgs e)
{
}
protected void Session_End(object sender, System.EventArgs e)
{
}
protected void Application_End(object sender, System.EventArgs e)
{
}
}
}
অথবা আপনি যদি অ্যাপ্লিকেশন উত্স-কোডের মালিক না হন তবে আপনি ওয়েবকনফিগটিতে এন্ট্রি যুক্ত করতে পারেন:
<httpModules>
<add name="RequestLanguageChanger" type= "libRequestLanguageChanger.RequestLanguageChanger, libRequestLanguageChanger" />
</httpModules>
</system.web>
<system.webServer>
<validation validateIntegratedModeConfiguration="false"/>
<modules runAllManagedModulesForAllRequests="true">
<add name="RequestLanguageChanger" type="libRequestLanguageChanger.RequestLanguageChanger, libRequestLanguageChanger" />
</modules>
</system.webServer>
</configuration>
System.webServer এ এন্ট্রি আইআইএস ++ এর জন্য, অন্যটি সিস্টেম.ওয়েব আইআইএস for এর জন্য
Note নোট করুন যে আপনাকে রানআলম্যানেজডমডিউলসঅলআরকেষ্টগুলি সত্য হিসাবে সেট করা দরকার, এর জন্য এটি সঠিকভাবে কাজ করে।
স্ট্রিং টাইপ ফর্ম্যাট হয় "Namespace.Class, Assembly"
। মনে রাখবেন যে আপনি যদি সি # এর পরিবর্তে ভিবি.এনইটি তে আপনার অ্যাসেম্বলি লিখে থাকেন তবে ভিবি প্রতিটি প্রকল্পের জন্য একটি ডিফল্ট-নেমস্পেস তৈরি করে, তাই আপনার স্ট্রিংটি দেখতে হবে
"[DefaultNameSpace.Namespace].Class, Assembly"
আপনি যদি এই সমস্যাটি এড়াতে চান তবে সি # তে ডিএলএল লিখুন।