এইচটিটিপি বা এইচটিটিপিএস সনাক্ত করুন এবং তারপরে জাভাস্ক্রিপ্টে HTTPS জোর করে force


297

এইচটিটিপি বা এইচটিটিপিএস সনাক্ত করার এবং তারপরে জাভাস্ক্রিপ্টের সাহায্যে এইচটিটিপিএস ব্যবহার করার জন্য কি কোনও উপায় আছে?

আমি detecting জন্য কিছু কোড রয়েছে HTTP অথবা HTTPS কিন্তু আমি ব্যবহার করার জন্য এটি বাধ্য করতে পারে https:

আমি উইন্ডো.লোকেশন.প্রোটোকল সম্পত্তিটি যা সাইটের তা নির্ধারণের https:জন্য পৃষ্ঠাটি রিফ্রেশ করে আশা করছি ব্রাউজারে লোড হওয়া একটি নতুন https'ed URL টি পুনরায় লোড করুন।

if (window.location.protocol != "https:") {
   window.location.protocol = "https:";
   window.location.reload();
}

15
এটি অনেক বেশি নির্ভরযোগ্যভাবে (এবং দক্ষতার সাথে) পরিচালিত সার্ভারের দিক।
কোয়ান্টিন

3
আমি আপনি ঠিক মনে করেন. একজন আক্রমণকারী হিসাবে একটি এমআইটিএম আক্রমণ ব্যবহার করে, আমি কেবল এই কোডটি মুছতে পারি। সুতরাং এটি কেবল প্যাসিভ আক্রমণগুলির বিরুদ্ধে সুরক্ষা সরবরাহ করে।
ndevln


1
@ নিওড্যাভলিন এইচটিএম-তে একটি এমআইটিএম আক্রমণকারী সার্ভারের দিকটি পুনর্নির্দেশেরও প্রতিস্থাপন করতে পারে
অ্যালেক্স লেহম্যান

1
যথাযথভাবে। 2018 সালে, এইচএসটিএস ব্যবহার না করার কোনও অজুহাত নেই। এইচটিটিপিএসকে বাধ্য করার একমাত্র নিরাপদ উপায়।

উত্তর:


499

এটা চেষ্টা কর

if (location.protocol !== 'https:') {
    location.replace(`https:${location.href.substring(location.protocol.length)}`);
}

location.href = blahএটি ব্রাউজারের ইতিহাসে পুনর্নির্দেশ যুক্ত করে। যদি ব্যবহারকারী পিছনের বোতামটি হিট করে তবে সেগুলি একই পৃষ্ঠায় ফিরানো হবে। এটি location.replaceব্রাউজারের ইতিহাসে পুনর্নির্দেশটি যুক্ত না করায় এটি ব্যবহার করা ভাল ।


3
কেন windowএবং না document?
ওয়েবজয়


11
স্ট্রিং তুলনা করা উচিত !==?
ওয়েস টার্নার

5
@ ওয়েজটারার এটি কোনওভাবেই গুরুত্বপূর্ণ নয়। তারা উভয় সর্বদা স্ট্রিং হতে চলেছে। যদি একটি সংখ্যা বা বুলিয়ান ছিল, তবে এটি কোনও পার্থক্য করতে পারে।
সৌম্য

15
location.replace(url)location.href = urlএই ক্ষেত্রে চেয়ে অনেক ভাল হবে । আপনি ব্রাউজারের ইতিহাসে এই পুনঃনির্দেশটি চান না বা কেবল পুনঃনির্দেশের জন্য ব্যবহারকারী পিছনে বোতামটি চাপছেন।
ফ্রান্সিসকো জারাবোজো

58

অবস্থান.প্রোটোকল সেট করা নতুন ইউআরএল নেভিগেট করে । কোনও কিছু পার্স / টুকরো করার দরকার নেই।

if (location.protocol !== "https:") {
  location.protocol = "https:";
}

ফায়ারফক্স 49-তে একটি বাগ রয়েছে যেখানে httpsকাজ করে তবে https:তা হয় না। হতে বলেন ফায়ারফক্স 54 সংশোধন


2
if window.location.href.match('http:') window.location.href = window.location.href.replace('http', 'https')সর্বশেষতম এফএফ এবং ক্রোমে কাজ করে।
মার্টিন স্ট্যানার্ড

2
location.protocol = "https";ফায়ারফক্স ২৮
নিক রাশলার

1
পিছনের বোতামটি ভেঙে দেয় এমন ক্র্যাপ। location.replaceপরিবর্তে ব্যবহার করুন।
যুদ্ধের মতো শিম্পাঞ্জি

22

এটি ভাল ধারণা নয় কারণ আপনি কেবলমাত্র অস্থায়ীভাবে https এবং ব্রাউজারে ব্যবহারকারীকে পুনঃনির্দেশ করুন তবে এই পুনঃনির্দেশটি সংরক্ষণ করে না।

আপনি ওয়েব-সার্ভারের জন্য টাস্ক বর্ণনা করেন (অ্যাপাচি, এনগিনেক্স ইত্যাদি) HTTP 301, HTTP 302


3
সম্মত হন। সার্ভারে https জোর করা আরও নির্ভরযোগ্য
হোং লং

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

কেবলমাত্র https- এর
বি /

1
অগত্যা সত্য নয়। 301 ক্যাশে করার কারণে শয়তান বলে মনে করার একটি বিদ্যালয় রয়েছে। getluky.net/2010/12/14/301-redirects-cannot-be-undon
পাঁচডোগিট

2
যদিও এটি সত্য যে এটি সাধারণত এই ক্লায়েন্টের পক্ষে করা ভাল ধারণা নয়, এটি যা বলা হয়েছিল তা নয়। এবং আপনি এটি কীভাবে করবেন তা দেখান না, সুতরাং এটি কোনও উত্তর নয়। এছাড়াও, স্ট্যাটিক ওয়েবপৃষ্ঠাগুলির এই দিনগুলিতে প্রায়শই এই সার্ভারের পাশ (গিথুব পৃষ্ঠাগুলি ভাবেন) করার কোনও উপায় নেই, যার অর্থ আপনাকে ক্লায়েন্টে এটি করতে হবে। তবুও, লোকেদের এসএসএল সংস্করণে আঘাত না এড়াতে আপনি ক্যানোনিকাল লিঙ্ক ট্যাগ যুক্ত করে অনুসন্ধানের উন্নতিতে সহায়তা করতে পারেন।
অলিগোফ্রেন

16

এ কেমন?

if (window.location.protocol !== 'https:') {
    window.location = 'https://' + window.location.hostname + window.location.pathname + window.location.hash;
}

যদিও আপনি সার্ভারের পক্ষ থেকে এটি করতে চাইবেন।


এটি বন্দরটি হারিয়েছে
ইডমাস্টার


5

এর উত্তর দেওয়ার কোনও জাভাস্ক্রিপ্টের উপায় নয় তবে আপনি যদি ক্লাউডফ্লেয়ার ব্যবহার করেন তবে আপনি পৃষ্ঠা বিধি লিখতে পারেন যা ব্যবহারকারীকে এইচটিটিপিএসে আরও দ্রুত পুনর্নির্দেশ করে এবং এটি বিনামূল্যে free ক্লাউডফ্লেয়ারের পৃষ্ঠা বিধিগুলিতে এটি দেখতে দেখতে:

এখানে চিত্র বর্ণনা লিখুন


আমি এটিকে খুব দরকারী বলেছি, প্রশ্নের উত্তরকে ফ্রেম হিসাবে জবাব দেওয়ার জন্য নয়, বরং সাএস পরিষেবাটির পক্ষে সম্ভবত আরও নির্ভরযোগ্য উপায় সম্পর্কে দরকারী তথ্য সরবরাহ করার জন্য যা সর্বদা অন এসএসএল দেয় না।
মিঃমিসিজ

3

আপনি করতে পারেন:

  <script type="text/javascript">        
        if (window.location.protocol != "https:") {
           window.location.protocol = "https";
        }
    </script>

এটা কাজ করে। এটি কি পুনর্নির্দেশের কোনও আদর্শ উপায়? এটি কি সমস্ত ব্রাউজারে কাজ করবে?
মাহফুজ


1

আপনার এটি পরীক্ষা করা উচিত: https://developer.mozilla.org/en-US/docs/Web/HTTP/Heeda/Content-Security- পলিসি / আপগ্রেড- আইন সুরক্ষার-প্রয়োজনীয়তা

এই যোগ মেটা আপনার index.html ভিতরে ট্যাগ মাথা

<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">

আশা করি এটি সাহায্য করেছে।


0

আমি এই প্রশ্নের উত্তর পছন্দ করি। তবে সৃজনশীল হতে, আমি আরও একটি উপায়ে ভাগ করতে চাই:

<script>if (document.URL.substring(0,5) == "http:") {
            window.location.replace('https:' + document.URL.substring(5));
        }
</script>

-1
<script type="text/javascript">
        function showProtocall() {

            if (window.location.protocol != "https") {
                window.location = "https://" + window.location.href.substring(window.location.protocol.length, window.location.href.length);
                window.location.reload();
            }
        }
        showProtocall();
</script>

-1

হাই আমি এই সমাধানটি পুরোপুরি কার্যকরভাবে ব্যবহার করেছি check এখনই https ব্যবহার করার দরকার নেই ps

<script language="javascript" type="text/javascript">
document.location="https:" + window.location.href.substring(window.location.protocol.length, window.location.href.length);
</script>

3
প্রোটোকলটি https হলেও এই পৃষ্ঠাটি রিফ্রেশ করবে না?
অ্যান্থনি

-2

আমার সবে স্ক্রিপ্টের সমস্ত পরিবর্তনগুলি পুই সিডিএম দ্বারা পরীক্ষিত হয়েছিল , উপরে উত্তরগুলি এবং পিএইচপি, এইচটিসেস, সার্ভার কনফিগারেশন এবং জাভাস্ক্রিপ্ট ব্যবহার করে অনেকগুলি অন্তর্ভুক্ত ছিল, ফলাফলগুলি স্ক্রিপ্ট

<script type="text/javascript">        
function showProtocall() {
        if (window.location.protocol != "https") {
            window.location = "https://" + window.location.href.substring(window.location.protocol.length, window.location.href.length);
            window.location.reload();
        }
    }
    showProtocall();
</script> 

বিবেক-শ্রীবাস্তব দ্বারা সরবরাহিত সেরা কাজ করে এবং আপনি জাভা স্ক্রিপ্টে আরও সুরক্ষা যুক্ত করতে পারেন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.