【问题标题】:How to work with HTTPS request in JQuery如何在 JQuery 中处理 HTTPS 请求
【发布时间】:2010-12-19 12:01:25
【问题描述】:

我正在使用 JQuery ajax 来验证用户名和密码,但是由于安全原因我需要调用 HTTPS 请求。

下面是我的 JQuery 代码: 我需要在其中实现 HTTPS 调用。

 //Submitting the form
$("#loginDetails > form").submit(function()
{  
    //Hiding the Login button
    $("#loginButton").hide();

    //Showing the ajax loading image
    $("#ajaxloading").show();

    // 'this' refers to the current submitted form  
    var str = $(this).serialize();   
    // -- Start AJAX Call --

    $.ajax({  
        type: "POST",
        url: "Login.aspx",  // Send the login info to this page
        data: str,  
        success: function(result)
        {  

            $("#loginDetails").ajaxComplete(function(event, request, settings)
            {  

             // Show 'Submit' Button
            $('#loginButton').show();

            // Hide Gif Spinning Rotator
            $('#ajaxloading').hide();  

            var resLength = result.trim().length;

            if(resLength!=0)
            {
                var arr = result.split(",");
                var fname = arr[0];
                var lname = arr[1];
                var activeCardNo = arr[2];
                var multipleTier = arr[3];
                var activeStatus = arr[4];
                var access = arr[5];

                 if(access!='' && access!='undefined') // LOGIN OK?
                 { 
                     $('.validateTips').hide();
                    var login_response = '<div id="logged_in">' +
                     '<div style="width: 350px; float: left; margin-left: 80px;">' + 
                     '<div style="width: 40px; float: left;">' +
                     '<img style="margin: 22px 0px 10px 0px;" align="absmiddle" src="system/images/ajax-loader.gif">' +
                     '</div>' +
                     '<div style="margin: 24px 0px 0px 10px; float: right; width: 300px;">'+ 
                     "You are successfully logged in! <br /> Please wait while you're redirected...</div></div>";  

                    $('#loginButton').hide();
                    $('#closeBtn').hide();
                    $('#divMember').text(fname +' '+ lname);
                    $('#spnSkywardsNo').text(activeCardNo);
                    $('#spnTierStatus').text(multipleTier);
                    $("#ui-dialog-title-skywardsLogin").text(getDataFromResourceFile('pleaseWait'));

                    $('#divSuccessLogin').html(login_response);
                    $('#divSuccessLogin').show();
                    $('#loginDetails').hide();
                    //$(this).html(login_response); // Refers to 'status'

                    // After 3 seconds redirect the 
                    setTimeout(closeDialog, 3000); 

                 }  
              }
            else// ERROR?
             {  
                 var login_response = getDataFromResourceFile('InvalidUsername');
                 $('.validateTips').html(login_response);
             }

     });  

     }  

    });  

    // -- End AJAX Call --

    return false; 
});  

以上代码运行完美,但由于安全问题,我需要将我的调用调用改为HTTPS,这样我的ajax调用就不会是"Login.aspx" 它将是 "https://login.aspx"

请建议如何实现这一点,以便维护我的安全并且不会发生任何安全冲突。

【问题讨论】:

    标签: jquery


    【解决方案1】:

    如果页面https://,默认情况下会发生这种情况,这种情况必须...你不能从@发出AJAX请求987654325@ 页面到https:// 目的地,反之亦然。当您尝试此操作时,它会被视为不同的协议,并且违反了same origin policy,因此您将无法看到响应。

    【讨论】:

    • 你能把它清除掉吗,所以我理解上面的措辞,如果页面是HTTPS,那么它会自动处理,不会有安全违规,如果可能,请举一些例子。 .谢谢
    • @Nick:嗯,你可以做到这一点——使用CORSJSON-P——但你必须故意这样做。 :-)
    • @T.J. - 这不是 AJAX 请求 :)
    • @MKS:如果页面本身是通过https 请求和提供的,那么与它相关的任何内容(例如,URL Login.aspx)也将通过https 请求和提供。不需要你做任何特别的事情。只有当您的页面服务不安全 (http) 时,您才需要特别努力通过 https 处理其他任何事情。
    • @MKS - 这是正确的,如果页面是 https:// 并且您的路径是相对的(例如 Login.aspx 就像您拥有的那样,或者 /path/Login.aspx,而不是 http://site.com/Login.aspx)那么请求也是https://,它将保持相同的协议。
    猜你喜欢
    • 1970-01-01
    • 2017-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多