javascript - HTTP या HTTPS का पता लगाएं फिर जावास्क्रिप्ट में HTTPS को मजबूर करें




window.location (6)

इस बारे में कैसा है?

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

आदर्श रूप से आप सर्वर पक्ष पर ऐसा करेंगे, हालांकि।

क्या HTTP या HTTPS का पता लगाने का कोई तरीका है और फिर जावास्क्रिप्ट के साथ HTTPS का उपयोग करने के लिए मजबूर है?

मेरे पास HTTP या HTTPS का पता लगाने के लिए कुछ कोड हैं लेकिन मैं इसे https: का उपयोग करने के लिए मजबूर नहीं कर सकता।

मैं window.location.protocol प्रॉपर्टी का उपयोग कर रहा हूं जो साइट को https: पर सेट करने के लिए सेट कर रहा है https: फिर ब्राउज़र में लोड किए गए एक नए https'ed यूआरएल को पुनः लोड करने के लिए पृष्ठ को रीफ्रेश करें।

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

इसका जवाब देने के लिए जावास्क्रिप्ट तरीका नहीं है, लेकिन यदि आप क्लाउडफ्लारे का उपयोग करते हैं तो आप पेज नियम लिख सकते हैं जो उपयोगकर्ता को HTTPS पर बहुत तेज़ी से रीडायरेक्ट करते हैं और यह मुफ़्त है। क्लाउडफ्लेयर के पेज नियमों में ऐसा लगता है:


मेरे पास पुई सीडीएम द्वारा परीक्षण की गई सभी स्क्रिप्ट विविधताएं हैं, ऊपर दिए गए उत्तरों और php, htaccess, सर्वर कॉन्फ़िगरेशन और जावास्क्रिप्ट का उपयोग करके कई अन्य शामिल हैं, परिणाम हैं कि स्क्रिप्ट

<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> 

द्वारा प्रदान किया गया सर्वोत्तम काम करता है और आप जावा स्क्रिप्ट में और सुरक्षा जोड़ सकते हैं।


यह अच्छा विचार नहीं है क्योंकि आप केवल अस्थायी रीडायरेक्ट उपयोगकर्ता को https और ब्राउज़र पर रीडायरेक्ट नहीं करते हैं।

आप वेब-सर्वर (अपाचे, nginx आदि) http 301, http 302 के लिए कार्य का वर्णन करते हैं


Location.protocol को एक नए यूआरएल पर नेविगेट करना । कुछ भी पार्स / टुकड़ा करने की जरूरत नहीं है।

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

फ़ायरफ़ॉक्स 49 में एक bug जहां https काम करता है लेकिन https: नहीं करता है। फ़ायरफ़ॉक्स 54 में तय किया गया कहा।


<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>







window.location