繁体   English   中英

从jquery ajax调用WCF服务时如何避免弹出登录

[英]How to avoid pop up login when calling WCF service from jquery ajax

朋友们,我知道您已经遇到过很多这类问题。即使经过大量的Google搜索,我也找不到答案。

要求:使用jquery ajax请求调用启用了基本身份验证的WCF服务GET API。

客户端代码:

<script src="Scripts/jquery-1.9.1.min.js" type="text/javascript"></script>
<script src="Scripts/Base64.js" type="text/javascript"></script>
<%--<script src="Scripts/jquery.base64.js" type="text/javascript"></script>--%>
<script type="text/javascript">
    function make_base_auth(user, pass) {
        var tok = user + ':' + pass;
        var hash = Base64.encode(tok);
        return "Basic " + hash;
    }


    $(document).ready(function () {
        var username = 'user';
         var password = 'ppp';

        var auth = make_base_auth(username, password);
        $.ajax({
            type: "GET",
            dataType: "jsonp",
            contentType: "application/javascript",
            xhrFields: {
                withCredentials: true
            },
            cache: false,
            crossDomain: true,
            beforeSend: function (xhr) {                   
                xhr.setRequestHeader("Authentication", auth)
            },                
            data: { 'inputData': "{PatientID:'12',FromDateTime:'05/21/2013 1:28:15 PM',ToDateTime:'05/21/2013 1:28:15 PM',ResponseType:'json',CompressResponse:'false'}" },


url:"http://192.168.15.160/RestAPI/Service.svc/GetMedicationValues",             


            success: function (jsonData) {
                console.log(jsonData);
            },
            error: function (request, textStatus, errorThrown) {
                console.log(request.responseText);
                console.log(textStatus);
                console.log(errorThrown);
            }
        });
    });
</script>

问题:运行客户端应用程序时,我会弹出登录信息。只有在弹出窗口中提供正确的凭据时,我才会获得输出, 而不管我在请求标头中传递的凭据是什么。 。有人能解决这个问题吗? 谢谢。

JSONP 不适用于基本身份验证。 如果不需要跨域请求,请使用json作为数据类型。

Alos注意到,自JQuery 1.7起,现在有两个用于身份验证的选项: userName和password

如果服务器在提供响应之前执行HTTP身份验证,则可以通过用户名密码选项发送用户名和密码对。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM