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



window.location (9)

इसे इस्तेमाल करे

if (location.protocol != 'https:')
{
 location.href = 'https:' + window.location.href.substring(window.location.protocol.length);
}

क्या 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();
}

if (location.protocol == 'http:')
  location.href = location.href.replace(/^http:/, 'https:')

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>

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

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

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


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

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


हाय मैंने इस समाधान का पूरी तरह से काम किया। जांच करने की आवश्यकता है, बस https का उपयोग करें।

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

ब्रैनी को धन्यवाद देता है


मेरे पास पुई सीडीएम द्वारा परीक्षण की गई सभी स्क्रिप्ट विविधताएं हैं, ऊपर दिए गए उत्तरों और 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> 

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


मैंने अभी यह जावास्क्रिप्ट कोड लिखा है ( DOM मैनिपुलेशन के लिए Prototype का उपयोग करके):

var require = (function() {
    var _required = {};
    return (function(url, callback) {
        if (typeof url == 'object') {
            // We've (hopefully) got an array: time to chain!
            if (url.length > 1) {
                // Load the nth file as soon as everything up to the
                // n-1th one is done.
                require(url.slice(0, url.length - 1), function() {
                    require(url[url.length - 1], callback);
                });
            } else if (url.length == 1) {
                require(url[0], callback);
            }
            return;
        }
        if (typeof _required[url] == 'undefined') {
            // Haven't loaded this URL yet; gogogo!
            _required[url] = [];

            var script = new Element('script', {
                src: url,
                type: 'text/javascript'
            });
            script.observe('load', function() {
                console.log("script " + url + " loaded.");
                _required[url].each(function(cb) {
                    cb.call(); // TODO: does this execute in the right context?
                });
                _required[url] = true;
            });

            $$('head')[0].insert(script);
        } else if (typeof _required[url] == 'boolean') {
            // We already loaded the thing, so go ahead.
            if (callback) {
                callback.call();
            }
            return;
        }

        if (callback) {
            _required[url].push(callback);
        }
    });
})();

उपयोग:

<script src="prototype.js"></script>
<script src="require.js"></script>
<script>
    require(['foo.js','bar.js'], function () {
        /* Use foo.js and bar.js here */
    });
</script>

जिस्ट: http://gist.github.com/284442





javascript https window.location