我正在开发一个项目,并且遇到了迄今为止我一直无法解决的问题。正在检索HTTP标头令牌
该项目是一个使用jquery移动框架构建的移动web应用程序。 Web应用程序可以从wcf服务中提取json并使用jquery mobile ui效果进行渲染。我们已经达到了我们正在实施基于令牌的安全性的阶段,这是我的问题所在。在这一刻,我想添加一个自定义的HTTP Header,我将用它来处理所有其他的Ajax请求。
function login_service()
{
//$.mobile.pageLoading();
var stringUsername = $('#txtUsername').val();
var stringPassword = $('#txtPassword').val();
$('#loginMessage').empty(); // Empty message div
$.ajax(
{
url: "urlstring"+stringUsername+"/"+stringPassword, // This URL uses https
dataType: "jsonp",
type: 'GET',
beforeSend: setHeader,
success: function(loginResult)
{
$('#loginMessage').html('<a>'+ loginResult.tkt + '</a>');
tkn = loginResult.tkt; // Json token
if(tkn == null)
{
$('#loginMessage').append("invalid login:" + ' ' + '<br>' + "token:" + ' ' + tkn);
$.mobile.pageLoading(true);
}
else
{
$.mobile.changePage('#search'); // Change page to search screen
}
},
error: function(status)
{
alert(status);
$.mobile.pageLoading(true); // End loading animation
}
})
}
function setHeader(xhr)
{
xhr.setRequestHeader('Authorization', tkn);
alert("header set");
}
function doSearch_webservice(){ // Start of function webservice
$.ajax({ // Start of ajax call
url: "urlstring"+$('#jsonSearch').val(), // If URL string is http, custom header will
// be displayed in fiddler/firebug. IF HTTPS custom header won't work.
dataType: 'jsonp',
type: 'GET',
timeout: '20000',
beforeSend: setHeader,
success: function(json_results)
{// Start of success function
if(json_results.keys == null)
{
$('#errMessage').html('<p class="error"><strong>'+ "Status:"
+ "No record found" + "<br>Please try again" +'</strong> </p>');
$.mobile.pageLoading(true);
}
else
{
$('#jsonResponse ul').remove();
// jquery mobile type i.e. data-inset
$('#jsonResponse').append('<ul class="listItems" data-role="listview" data-inset="true"></ul>');
var listItems = $('#jsonResponse').find('ul');
$.each(json_results.keys, function(key) { // Start of each loop
html=
'<a href="#" data-transition="slide" data-position="inline"OnClick="passQryStrg(\''+json_results.keys[key].id+'\' , \''+json_results.keys[key].cat+'\');">'+'<br>'+' '+'<font class="big-text"><b>'+' '+json_results.keys[key].lbl[0]+' '+'</font></b>'+' '+'<font class="small-text">'+' '+'<br>'+' '+json_results.keys[key].lbl[1]+' '+'</font>'+'</a>'
listItems.append('<li>'+html+'</li>');
}); // End of each loop
$('#info jsonResponse ul').listview();
$.mobile.pageLoading(true);
$.mobile.changePage("#info", { transition: "slide"});
$("#info").page("destroy").page();
}
// Destroy the page - next function call won't break css
}, // End of success function
error: function(jqXHR, textStatus, errorThrown)
{
$('#errMessage').html('<p class="error"><strong>'+ "Status:" + textStatus + "<br>Please try again" +'</strong> </p>');
$.mobile.pageLoading(true);
}
}); // End of ajax call
}; // Emd of webservice function
摘要: 如果do_search Ajax请求使用HTTP URL,我可以添加自定义标题。不过,我需要将URL更改为我们的wcf服务使用的https。当我做这个改变自定义标题停止工作。如果我的解释不清楚,我会尽力答复最好的答复。
感谢
如果我在我的jquery ajax请求中使用https url,任何人都知道什么是阻止我的自定义http标题工作? –