কীভাবে ওয়েবকনফিগ ফাইলটি ব্যবহার করে এইচটিটিপিএসকে বাধ্য করা যায়


220

আমি গুগল এবং স্ট্যাকওভারফ্লো এর আশেপাশে অনুসন্ধান করেছি এটির সমাধান খোঁজার চেষ্টা করে, তবে তারা সকলেই এএসপি.এনইটি ইত্যাদির সাথে সম্পর্কিত বলে মনে হচ্ছে

আমি সাধারণত আমার সার্ভারগুলিতে লিনাক্স চালাই তবে এই এক ক্লায়েন্টের জন্য আমি আইআইএস 7.5 (এবং প্লেস্ক 10) দিয়ে উইন্ডোজ ব্যবহার করছি। এই কারণেই আমি আইআইএস এবং ওয়েবকনফিগ ফাইলগুলির সাথে কিছুটা অপরিচিত । কোনও .htaccessফাইলে আপনি প্রোটোকল এইচটিটিপিএস কিনা তা সনাক্ত করতে পুনর্লিখনের শর্তাদি ব্যবহার করতে পারেন এবং সেই অনুযায়ী পুনর্নির্দেশ করতে পারেন। এটি একটি ওয়েবকনফিগ ফাইল ব্যবহার করে, বা এমনকি আমি ইনস্টল করা ' ইউআরএল পুনর্লিখন ' মডিউলটি ব্যবহার করে কি সহজ উপায় অর্জন করতে পারি?

আমার এএসপি.এনইটের কোনও অভিজ্ঞতা নেই তাই যদি এটি সমাধানের সাথে জড়িত থাকে তবে দয়া করে কীভাবে বাস্তবায়ন করবেন তার পরিষ্কার পদক্ষেপগুলি অন্তর্ভুক্ত করুন।

আমার ওয়েবকনফিগের সাথে এটি করার এবং পিএইচপি না করার কারণটি হ'ল আমি সাইটের মধ্যে থাকা সমস্ত সম্পদে এইচটিটিপিএসকে বাধ্য করতে চাই।



উত্তর:


427

আপনার ইউআরএল পুনর্লিখনের মডিউল প্রয়োজন, পছন্দসই ভি 2 (আমার কোনও ভি 1 ইনস্টল নেই, সুতরাং এটি সেখানে কাজ করবে কিনা গ্যারান্টি দিতে পারে না, তবে এটি হওয়া উচিত)।

এই জাতীয় ওয়েব কনফিগের একটি উদাহরণ এখানে দেওয়া হয়েছে - এটি সমস্ত সংস্থার (301 স্থায়ী পুনঃনির্দেশ ব্যবহার করে) HTTPS কে বাধ্য করবে:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <clear />
                <rule name="Redirect to https" stopProcessing="true">
                    <match url=".*" />
                    <conditions>
                        <add input="{HTTPS}" pattern="off" ignoreCase="true" />
                    </conditions>
                    <action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" redirectType="Permanent" appendQueryString="false" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>

পিএস এই নির্দিষ্ট সমাধানটির কেবল এএসপি.এনইটি / পিএইচপি বা অন্য কোনও প্রযুক্তির কোনও সম্পর্ক নেই কারণ এটি কেবল ইউআরএল পুনর্লিখনের মডিউল ব্যবহার করেই করা হয়েছে - এটি প্রাথমিক / নিম্ন স্তরের একটিতে প্রক্রিয়া করা হয় - অনুরোধটি আপনার কোডটি পৌঁছানোর আগে মৃত্যুদন্ড কার্যকর করা হয়।


6
@BenCarey এছাড়াও আপনি হওয়া উচিত Strict-Transport-Securityশিরোলেখ: en.wikipedia.org/wiki/HTTP_Strict_Transport_Security
LazyOne

22
আমি পুনঃনির্দেশটি পরিবর্তন করার পরামর্শ দিচ্ছি যাতে এটি কোয়েরি স্ট্রিংটি যুক্ত না করে কারণ এটি ইতিমধ্যে {REQUEST_URI of এর অংশ (অন্যথায় পরামিতিগুলি দু'বার যুক্ত হয়ে যায়)। <action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" redirectType="Permanent" appendQueryString="false" />
franzo

6
এটি কাজ করে তবে দুর্ভাগ্যক্রমে লোকালহোস্টেও। এড়াতে আপনি এটিকে <শর্তাবলী> এ যুক্ত করতে পারেন: <যোগ করুন ইনপুট = "{HTTP_HOST}" প্যাটার্ন = "লোকালহোস্ট"
নেগেট

5
এডাব্লুএস ইলাস্টিক বিয়ানস্টালক ব্যবহার করে, এই পদ্ধতিটি আমাকে সংশোধন না করা পর্যন্ত 302 অনেক বেশি পুনর্নির্দেশ প্রদান করছিল: <match url=".*"/>থেকে<match url="http://*.*" />
কেভিন আর।

1
@ সাম সম্ভবত আপনার কাছে ইউআরএল পুনর্লিখনের মডিউল ইনস্টল নেই? এটি ডিফল্টরূপে আইআইএসের সাথে আসে না, আলাদাভাবে ইনস্টল করা দরকার। যেমন ডকস.মাইক্রোসফট.ইন.ইউস
আইইস /

80

যারা এএসপি.এনইটি এমভিসি ব্যবহার করছেন তাদের জন্য। আপনি সমস্ত প্রতিক্রিয়া এইচটিটিপিএস হতে বাধ্য করতে প্রয়োজনীয়তা HTTPAttribute ব্যবহার করতে পারেন :

GlobalFilters.Filters.Add(new RequireHttpsAttribute());

আপনার সাইটটি সুরক্ষিত করতে আপনি করতে পারেন এমন অন্যান্য জিনিস:

  1. এন্টি-জালিয়াতি টোকেনকে এসএসএল / টিএলএস ব্যবহার করতে বাধ্য করুন:

    AntiForgeryConfig.RequireSsl = true;
  2. Web.config ফাইলটি পরিবর্তন করে ডিফল্টরূপে HTTPS প্রয়োজন কুকিজের প্রয়োজন:

    <system.web>
        <httpCookies httpOnlyCookies="true" requireSSL="true" />
    </system.web>
  3. NWebSec.Owin NuGet প্যাকেজটি ব্যবহার করুন এবং সাইট জুড়ে স্ট্রাইক ট্রান্সপোর্ট সিকিউরিটি (এইচএসটিএস) সক্ষম করতে নিম্নলিখিত কোডের লাইন যুক্ত করুন। নীচে প্রিলোড নির্দেশিকা যুক্ত করতে ভুলবেন না এবং আপনার সাইটটিকে এইচএসটিএস প্রিলোড সাইটে জমা দিন । এখানে এবং এখানে আরও তথ্য । মনে রাখবেন যে আপনি যদি ওউইন ব্যবহার না করে থাকেন তবে এমন একটি ওয়েবকনফিগ পদ্ধতি রয়েছে যা আপনি এনওয়েবসেক সাইটে পড়তে পারেন ।

    // app is your OWIN IAppBuilder app in Startup.cs
    app.UseHsts(options => options.MaxAge(days: 720).Preload());
  4. NWebSec.Owin NuGet প্যাকেজটি ব্যবহার করুন এবং সাইট জুড়ে সর্বজনীন কী পিনিং (এইচপিকেপি) সক্ষম করতে নিম্নলিখিত কোডের লাইন যুক্ত করুন। এখানে এবং এখানে আরও তথ্য ।

    // app is your OWIN IAppBuilder app in Startup.cs
    app.UseHpkp(options => options
        .Sha256Pins(
            "Base64 encoded SHA-256 hash of your first certificate e.g. cUPcTAZWKaASuYWhhneDttWpY3oBAkE3h2+soZS7sWs=",
            "Base64 encoded SHA-256 hash of your second backup certificate e.g. M8HztCzM3elUxkcjR2S5P4hhyBNf6lHkmjAHKhpGPWE=")
        .MaxAge(days: 30));
  5. যে কোনও ইউআরএল ব্যবহৃত হওয়াতে https স্কিম অন্তর্ভুক্ত করুন। আপনি কিছু ব্রাউজারে স্কিমটি অনুকরণ করলে সামগ্রী সুরক্ষা নীতি (সিএসপি) এইচটিটিপি শিরোনাম এবং সাব্রোসোর্স ইন্টিগ্রিটি (এসআরআই) ভাল খেলবে না nice এইচটিটিপিএস সম্পর্কে সুস্পষ্ট হওয়া ভাল। যেমন

    <script src="https://ajax.aspnetcdn.com/ajax/bootstrap/3.3.4/bootstrap.min.js">
    </script>
  6. এগুলি এবং আরও অনেক কিছু অন্তর্নির্মিত একটি প্রকল্প তৈরি করতে ASP.NET এমভিসি বয়লারপ্লেট ভিজ্যুয়াল স্টুডিও প্রকল্প টেম্পলেট ব্যবহার করুন G আপনি গিটহাবের কোডটিও দেখতে পারেন ।


4
প্রশ্নটি এএসপি.এনইটি-র জন্য জিজ্ঞাসা করে তবে ওয়েব ফর্মগুলি বা এমভিসি বর্ণনা করে না, সুতরাং এমভিসি ব্যবহারকারীদের জন্য আমি একটি বিস্তৃত উত্তর দিয়েছি (যা এইচটিটিপিএসকে বাধ্য করার জন্য ওয়েবকনফিগ ফাইলটি ব্যবহার করে না) এবং এখনও ... নিম্নচোটিত।
মুহাম্মদ রেহান সাইদ

6
ক) সমাধানটি কাজ করে তবে জিনিসগুলি পরিবর্তিত হয়েছে, এই বিশিষ্ট, উচ্চতর রেটযুক্ত প্রশ্নটি এমভিসিতে কী তৈরি হয়েছে তা ব্যবহার করে একটি আপডেট উত্তরের দাবি রাখে। খ) উত্তরটি সমস্ত ঘাঁটি কভার করার চেষ্টা করে। প্রশ্নটি সহজ নয়, একটি সম্পূর্ণ সাইটটিতে এইচটিটিপিএস সক্ষম করার জন্য ওয়েবকনফিগ ফাইল পরিবর্তন করার চেয়ে আরও অনেক বেশি প্রয়োজন requires পাঠকরা কোনও ওয়েবকনফিগ ফাইল পরিবর্তন করার চিন্তাভাবনায় ভ্রান্ত হতে পারে all অসম্পূর্ণ / পুরানো উত্তর ছাড়াই সুরক্ষা যথেষ্ট শক্ত।
মুহাম্মদ রেহান সাইদ

11
আমার মতে এটি একটি দুর্দান্ত এবং মূল্যবান উত্তর। যখন কেউ বিষয়টি গুগল করে এবং এই প্রশ্নের দিকে পরিচালিত হয় তখন আমি আপনার উত্তরটি এখানে এসে খুশী।
রাষ্ট্রপতি জেমস কে পোলক

1
টুইটারে আপনার তালিকায় এসআরআই যুক্ত হতে পারে? scotthelme.co.uk/subresource-integrity
নাথান

1
@ মুহম্মেদরহেনসেইদ সত্য - আমি "আপনার সাইট সুরক্ষিত করতে আপনি করতে পারেন এমন অন্যান্য জিনিস" এর শিরোনামও আমাকে এই সম্পর্কে ভাবিয়ে তোলে :)
নাথান

14

LazyOne এর উত্তর বাড়ানোর জন্য, এখানে উত্তরের একটি বর্ণিত সংস্করণ।

<rewrite>
  <rules>
     <clear />
     <rule name="Redirect all requests to https" stopProcessing="true">
       <match url="(.*)" />
         <conditions logicalGrouping="MatchAll">
           <add input="{HTTPS}" pattern="off" ignoreCase="true" />
         </conditions>
         <action 
            type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" 
            redirectType="Permanent" appendQueryString="false" />
     </rule>
  </rules>
</rewrite>

এই সার্ভারে ইতিমধ্যে সংজ্ঞায়িত অন্য সমস্ত নিয়ম সাফ করুন। একটি নতুন নিয়ম তৈরি করুন, যা আমরা "সমস্ত অনুরোধকে https এ পুনঃনির্দেশ" নামকরণ করব। এই নিয়ম প্রক্রিয়া করার পরে, আর কোনও নিয়ম প্রক্রিয়া করবেন না! সমস্ত আগত ইউআরএল মেলে। তারপরে এই অন্যান্য সমস্ত শর্ত সত্য কিনা তা পরীক্ষা করে দেখুন: এইচটিটিপিএস বন্ধ রয়েছে। ঠিক আছে, এটি কেবলমাত্র একটি শর্ত (তবে এটি সত্য কিনা তা নিশ্চিত করুন)। যদি তা হয় তবে ক্লায়েন্টের কাছে 301 স্থায়ী পুনর্নির্দেশ পাঠান http://www.foobar.com/whatever?else=the#url-contains। এর শেষে কোয়েরি স্ট্রিংটি যুক্ত করবেন না, কারণ এটি ক্যোয়ারী স্ট্রিংটির সদৃশ হবে!

বৈশিষ্ট্য, বৈশিষ্ট্য এবং মানগুলির কিছু অর্থ এটিই।

  • সাফ সমস্ত সার্ভারের বিধিগুলি সরিয়ে দেয় যা আমরা অন্যথায় উত্তরাধিকারী হতে পারি।
  • বিধি একটি নিয়ম সংজ্ঞায়িত করে।
    • নাম একটি অবাধ শাসন (যদিও অনন্য) নাম।
    • স্টপ প্রসেসিং আইআইএস অনুরোধ পাইপলাইনে অনুরোধটি তাত্ক্ষণিকভাবে ফরোয়ার্ড করবেন কিনা বা প্রথমে অতিরিক্ত বিধিগুলি প্রক্রিয়া করার জন্য।
  • এই নিয়মটি কখন চালাবেন তা মেলে
    • ইউআরএলকে মূল্যায়ন করার জন্য একটি প্যাটার্ন url করুন
  • শর্তাদি এই নিয়মটি কখন চালাবেন সে সম্পর্কে অতিরিক্ত শর্তাদি; প্রথম ম্যাচ হলেই শর্তগুলি প্রক্রিয়াজাত করা হয় match
    • লজিকালগ্রুপিং সমস্ত শর্ত অবশ্যই ( MatchAll) বা শর্তগুলির যে কোনও একটি সত্য হতে হবে কিনা ( MatchAny); ও বনাম ওআর এর অনুরূপ।
  • অ্যাড একটি শর্ত যোগ করে যা অবশ্যই পূরণ করা উচিত add
    • ইনপুট ইনপুট যে একটি শর্ত মূল্যায়নের হয়; ইনপুট সার্ভার ভেরিয়েবল হতে পারে।
    • ইনপুট মূল্যায়নের জন্য স্ট্যান্ডার্ডের প্যাটার্ন করুন।
    • ক্যাপিটালাইজেশন গুরুত্বপূর্ণ কি না তা কেস করুন
  • যদি matchএবং এটি conditionsসমস্ত সত্য হয় তবে কী করবেন action
    • প্রকারটি সাধারণত redirect(ক্লায়েন্ট-সাইড) বা rewrite(সার্ভার-সাইড) হতে পারে।
    • এই নিয়মের ফলস্বরূপ url কী উত্পাদন করতে পারে; এক্ষেত্রে https://দুটি সার্ভার ভেরিয়েবলের সাথে সম্মতি জানাতে হবে ।
    • পুনঃনির্দেশ টাইপ যা HTTP ব্যবহার করতে পুনর্নির্দেশ; এটি একটি 301 স্থায়ী।
    • appendQueryString ফলাফলের শেষে ক্যোয়ারী স্ট্রিং যুক্ত করতে হবে কিনা url; এই ক্ষেত্রে, আমরা এটি মিথ্যা হিসাবে সেট করছি, কারণ {REQUEST_URI}ইতিমধ্যে এটি অন্তর্ভুক্ত রয়েছে।

সার্ভারের ভেরিয়েবলগুলি

  • {HTTPS}যা হয় হয় OFFবা হয় ON
  • {HTTP_HOST}হয় www.mysite.com, এবং
  • {REQUEST_URI} ইউআরআই বাকি অংশ অন্তর্ভুক্ত, যেমন /home?key=value
    • ব্রাউজারটি পরিচালনা করে #fragment(লাজিওনের মন্তব্য দেখুন)।

আরও দেখুন: https://www.iis.net/learn/extensions/url-rewrite-module/url-rewrite-module-configration-references


1
যদিও একটি দ্রষ্টব্য: ইউআরএল (থেকে /home?key=value#fragment) টুকরা অংশটি স্থানীয়ভাবে ব্যবহার করার উদ্দেশ্যে ব্রাউজারগুলির দ্বারা সার্ভারে সেট করা হয়নি।
LazyOne

@ লাজিওন প্রশ্ন। আমরা Greenearth.game/about#foo থেকে HTTPS এ পুনঃনির্দেশ করতে সফলভাবে উপরের ওয়েবকনফিগটি ব্যবহার করছি । এইচটিটিপিএস-এ স্যুইচে #foo টুকরা অন্তর্ভুক্ত রয়েছে। প্রদত্ত যে #foo অংশটি সেভের কাছে প্রেরণ করা হয়নি, পুনর্নির্দেশটি কীভাবে এটি অন্তর্ভুক্ত করবে?
শান লুটিন

এটি ব্রাউজার দ্বারা পরিচালিত হয়। গুগল ক্রোমে কেবল নেটওয়ার্ক ট্যাব খুলুন (বা ফায়ারফক্সে অনুরূপ) এবং URL টি আসলে কী অনুরোধ করা হয়েছে তা দেখুন (উদাহরণস্বরূপ http://www.example.com/members#oopsঅনুরোধের জন্য প্রেরণ করা হবে http://www.example.com/membersযার পরে এইচটিটিপিএস সংস্করণে পুনর্নির্দেশ করা হবে https://www.example.com/members- ব্রাউজারটি বাকি আছে)
লাজিওনে

@ লেজিওন তার জন্য আপনাকে ধন্যবাদ। যদি আমি সঠিকভাবে স্মরণ করি তবে কয়েকটি ওয়েবকিট বাগ রয়েছে যা খণ্ডটিকে পুনঃনির্দেশে অন্তর্ভুক্ত করা থেকে বিরত রাখে। সুতরাং, এটি বোঝা যায়। bugs.webkit.org/show_bug.cgi?id=24175
শন লুটিন

1
এন.ইউইকিপিডিয়া.org / উইকি / ফ্রেগমেন্ট_আইডেন্টিফায়ার - "ক্লায়েন্টরা কোনও ডকুমেন্ট পুনরুদ্ধার করার সময় সার্ভারগুলিতে ইউআরআই-টুকরা পাঠানোর কথা নয় এবং স্থানীয় অ্যাপ্লিকেশনের সাহায্য ছাড়াই (নীচে দেখুন) টুকরা এইচটিটিপি পুনর্নির্দেশগুলিতে অংশ নেয় না" - আমি আপনার শেষ মন্তব্যটি ভুল বুঝেছি সে ক্ষেত্রে কেবল পরিষ্কার হতে হবে।
LazyOne

6

গৃহীত উত্তরটি আমার পক্ষে কার্যকর হয়নি। আমি এই ব্লগে পদক্ষেপগুলি অনুসরণ করেছি ।

একটি মূল বিষয় যা আমার জন্য অনুপস্থিত ছিল তা হ'ল IIS এর জন্য ইউআরএল পুনর্লিখন সরঞ্জামটি ডাউনলোড এবং ইনস্টল করা দরকার। আমি এটি এখানে খুঁজে পেয়েছি । ফলাফল নিম্নলিখিত ছিল।

<rewrite>
        <rules>
            <remove name="Http to Https" />
            <rule name="Http to Https" enabled="true" patternSyntax="Wildcard" stopProcessing="true">
                <match url="*" />
                <conditions>
                    <add input="{HTTPS}" pattern="off" />
                </conditions>
                <serverVariables />
                <action type="Redirect" url="https://{HTTPS_HOST}{REQUEST_URI}" />
            </rule>
        </rules>
    </rewrite>

1

নেট কোরে, https://docs.microsoft.com/en-us/aspnet/core/security/enforcing-ssl এ নির্দেশাবলী অনুসরণ করুন

আপনার স্টার্টআপ.সগুলিতে নিম্নলিখিতগুলি যুক্ত করুন:

// Requires using Microsoft.AspNetCore.Mvc;
public void ConfigureServices(IServiceCollection services)
{
    services.Configure<MvcOptions>(options =>
    {
        options.Filters.Add(new RequireHttpsAttribute());
    });`enter code here`

এইচটিটিপিটিকে এইচটিটিপিএসে পুনর্নির্দেশ করতে, স্টার্টআপের মধ্যে নিম্নলিখিতটি যুক্ত করুন

// Requires using Microsoft.AspNetCore.Rewrite;
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
    loggerFactory.AddConsole(Configuration.GetSection("Logging"));
    loggerFactory.AddDebug();

    var options = new RewriteOptions()
       .AddRedirectToHttps();

    app.UseRewriter(options);

0

চমৎকার NWebsec লাইব্রেরি এইচটিটিপি থেকে এইচটিটিপিএস থেকে এইচটিটিপিএস এর upgrade-insecure-requestsট্যাগ ব্যবহার করে আপনার অনুরোধগুলি আপগ্রেড করতে পারে Web.config:

<nwebsec>
  <httpHeaderSecurityModule>
    <securityHttpHeaders>
      <content-Security-Policy enabled="true">
        <upgrade-insecure-requests enabled="true"  />
      </content-Security-Policy>
    </securityHttpHeaders>
  </httpHeaderSecurityModule>
</nwebsec>

0

আমার পরিবেশে আমাকে ইউআরএল পুনর্লিখন ইনস্টল করার অনুমতি দেওয়া হয়নি, সুতরাং, আমি অন্য একটি পথ খুঁজে পেয়েছি।

এটি আমার ওয়েবকনফাইগ এ যুক্ত করার ফলে ত্রুটি পুনর্লিখনের যোগ হয়েছে এবং আইআইএস 7.5 এ কাজ করেছে:

<system.webServer>
    <httpErrors errorMode="Custom" defaultResponseMode="File" defaultPath="C:\WebSites\yoursite\" >    
    <remove statusCode="403" subStatusCode="4" />
    <error statusCode="403" subStatusCode="4" responseMode="File" path="redirectToHttps.html" />
</httpErrors>

তারপরে, এখানে পরামর্শ অনুসরণ করুন: https://www.sslshopper.com/iis7-redirect-http-to-https.html

আমি এইচটিএমএল ফাইল তৈরি করেছি যা পুনঃনির্দেশ করে (redirectToHttps.html):

<html>
<head><title>Redirecting...</title></head>
<script language="JavaScript">
function redirectHttpToHttps()
{
    var httpURL= window.location.hostname + window.location.pathname + window.location.search;
    var httpsURL= "https://" + httpURL;
    window.location = httpsURL;
}
redirectHttpToHttps();
</script>
<body>
</body>
</html>

আমি আশা করি যে কেউ এই জায়গাটি কার্যকরভাবে খুঁজে পেয়েছে কারণ আমি টুকরো টুকরো সব অন্য কোথাও খুঁজে পেলাম না।


-7

একটি সহজ উপায় হল আইটিএসকে HTTP অনুরোধগুলির জন্য আপনার কাস্টম ত্রুটি ফাইলটি প্রেরণ করতে বলা। ফাইলটিতে একটি মেটা পুনর্নির্দেশ, একটি জাভাস্ক্রিপ্ট পুনর্নির্দেশ এবং লিঙ্ক ইত্যাদি সহ নির্দেশাবলী থাকতে পারে ... গুরুত্বপূর্ণভাবে, আপনি এখনও সাইটের জন্য "এসএসএল প্রয়োজন" (বা ফোল্ডার) পরীক্ষা করতে পারেন এবং এটি কাজ করবে।

</configuration>
</system.webServer>
    <httpErrors>
        <clear/>
        <!--redirect if connected without SSL-->
        <error statusCode="403" subStatusCode="4" path="errors\403.4_requiressl.html" responseMode="File"/>
    </httpErrors>
</system.webServer>
</configuration>

ডাউনটা কেন? এটি কাজ করে এবং প্রশ্নের উত্তর দেয়।
পুনর্নির্দেশ করুন

14
এটি ডাউন ভোট, কারণ আপনি গুগলকে বলছেন যে আপনার ফাইলটি পাওয়া যায় নি এবং তারপরে আপনি জাভাস্ক্রিপ্ট পুনর্নির্দেশের জন্য ব্যবহার করছেন যা সাধারণত খারাপ।
থমাস বেনেট
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.