gpt4 book ai didi

jquery - 检索 HTTP header token

转载 作者:行者123 更新时间:2023-12-01 08:21:26 24 4
gpt4 key购买 nike

我正在做一个项目,遇到了一个到目前为止我无法解决的问题。

该项目是一个使用 jquery 移动框架构建的移动 Web 应用程序。 Web 应用程序可以从 wcf 服务中提取 json 并使用 jquery 移动 ui 效果渲染它。我们已经达到了实现基于 token 的安全性的阶段,这就是我的问题所在。此时,我想添加一个自定义 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:" + '&nbsp;' + '<br>' + "token:" + '&nbsp;' + 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,我可以添加自定义 header 。但是我需要将 url 更改为我们的 wcf 服务使用的 https。当我进行此更改时,自定义 header 将停止工作。如果我的解释不清楚,请道歉,我会尽力回答。

谢谢

最佳答案

我已经解决了我一直遇到的问题。

当使用 xmlHttpRequest 对象创建自定义 HTTP 请求 header 时。或者就我而言,因为我一直在使用 jquery,一个 ajax 请求。发出请求的网页和请求本身都必须使用具有相同协议(protocol)的 url。例如。 https。如果网页有一个 http url 并且它使用 https 发出 ajax 请求,则这将不起作用。

这是因为 http://www.w3.org/Security/wiki/Same_Origin_Policy 上定义的同源策略不会允许的。它是为了保护网站免受安全漏洞的影响。如果没有这样的安全性,脚本就可以利用网站漏洞。

希望这能帮助任何陷入这个特定问题的人。

关于jquery - 检索 HTTP header token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7162235/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com