由于某些要求,我需要使用jquery ajax登录到某个站点..但是当我尝试这样做时... firebug控制台说它是302错误。 我试图为其处理实现代码,但遗憾的是没有成功
这是我迄今为止尝试过的代码:
<script type='text/javascript' src='http://code.jquery.com/jquery.js'>
</script>
<script type='text/javascript'>
$(document).ready(function(){
$.ajax({
url : "https://testDomain/login.asp",
async : false,
type : 'POST',
data : {Username:'test',Password:'testPass'},
success : function(respText){alert(respText);},
error : function (jqXHR, textStatus, errorThrown)
{
console.log(jqXHR.getResponseHeader("Location")); // undefined;
},
statusCode: {
302: function() {
alert("page not found");
}
},
complete : function(response) {
if(response.status == 302) {
window.alert('page not found');
}
}
})
});
</script>
当我看到响应标题时,它们显示为
Date Wed, 13 Mar 2013 06:43:18 GMT
Location https://testDomain/pageXXX.asp
Server Microsoft-IIS/6.0
Set-Cookie TravAuthV=e;path=/; domain=testDomain.com;
X-Powered-By ASP.NET
我错过了什么.. ??或者还有其他替代方法来处理这个
感谢您的时间..任何帮助将不胜感激......
答案 0 :(得分:1)
你没有遗漏任何问题在下面。
url : "https://testDomain/login.asp",
您正在使用ajax发送SSL请求,我认为它不起作用,因为它违反了Javascript的策略,因为它没有看到与非SSL网址相同的来源请求SSL。
你能做什么?
您可以从服务器添加Access-Control-Allow-Origin
标头。
Access-Control-Allow-Origin: https://testDomain/login.asp
尝试使用设置crossDomain : true
和dataType:jsonp
,如果不是jsonp
响应,请将其删除。
$.ajax(
{
url: 'https://testDomain/login.asp',
async : false,
type : 'POST',
data : {Username:'test',Password:'testPass'},
success : function(respText){alert(respText);},
crossDomain: true,
dataType: 'jsonp',
error: function() { alert('Failed!'); },
beforeSend: function(xhr)
{
xhr.setRequestHeader('Authorization',getToken());
}
});