[英]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.