使用jquery ajax解决302重定向问题

由于某些要求,我需要使用jquery ajax登录网站..但是当我尝试这样做时。 firebug控制台说这是302错误。
我试图为其处理实现代码,但遗憾的是没有成功</ p>

这是我迄今为止尝试过的代码:< / p>

 &lt; script type ='text / javascript'src ='http://code.jquery.com/jquery.js'> 
&lt; / script&gt; \ n&lt; script type ='text / javascript'&gt;

$(document).ready(function(){

$ .ajax({

url:“https: //testDomain/login.asp",
async:false,
type:'POST',
data:{Username:'test',Password:'testPass'},
success:function(respText){ alert(respText);},

错误:function(jqXHR,textStatus,errorThrown)
{
console.log(jqXHR.getResponseHeader(“Location”)); // undefined;
},

statusCode:{
302:function(){
alert(“找不到页面”);
}
},
完成:function(response){
if(response.status == 302){
window.alert('page not found');

}
}
})

});

&lt; / script&gt;
</ code> </ pre>

当我看到响应标题时 显示为</ p>

  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
</ code> </ pre>

我错过了什么.. ?? 或者还有其他办法来处理这个</ p>

感谢您的时间..任何帮助将不胜感激... </ p>
</ div>

展开原文

原文

Due to some requirement I need to login to a site using jquery ajax .. but when I try to do so .. the firebug console is saying that it is 302 error. I have tried to implement the code for its handling but unfortunately with no success

Here is my code I have tried till now :

<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>

when I see the response headers they show up as

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

What am I missing .. ?? Or is there any other alternative to handle this

Thanks for your time .. any help will be appreciated...

1个回答



您没有遗漏任何问题在下面的行。</ p>

  url:“  https://testDomain/login.asp“,
</ code> </ pre>

您正在使用ajax发送SSL请求,我认为它不起作用,因为它违反了Javascript的政策,因为它 没有看到与非SSL网址在同一来源中请求的SSL .. </ p>

您可以做什么?</ strong> </ p>

您可以从服务器添加 Access-Control-Allow-Origin </ code>标头。 </ p>

  Access-Control-Allow-Origin:https://testDomain/login.asp 
</ code> </ pre>

了解更多</ strong> </ kbd> </ p> \ n

尝试使用设置 crossDomain:true </ code>和 dataType:jsonp </ code>,如果不是 jsonp </ code>响应,则将其删除。</ p> \ n

  $。ajax(
{
url:'https://testDomain/login.asp',
async:false,
type:'POST',
data: {用户名:'test',密码:'testPass'},
成功:function(respText){alert(respText);},
crossDomain:true,
dataType:'jsonp',
error:function( ){alert('Failed!');},
beforeSend:function(xhr)
{
xhr.setRequestHeader('Authorization',getToken());
}
});
</ 代码> </ pre>
</ div>

展开原文

原文

You are not missing anything problem is in below line.

url        : "https://testDomain/login.asp",

you are sending SSL request using ajax and i don't think its working because it's violates Javascript's policy because it doesn't see the SSL Requested from the same source as the non-SSL url..

What you can do?

you can add the Access-Control-Allow-Origin header from the server.

Access-Control-Allow-Origin: https://testDomain/login.asp

Read More

Try using setting crossDomain : true and dataType:jsonp if not jsonp response then remove it.

$.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());
    }
});

dongpa6867
dongpa6867 对此有任何进一步的建议......?
7 年多之前 回复
dougou5844
dougou5844 我创建了函数getToken(),它返回base64值“test:test Passed”..但是现在ajax没有发送请求.. :(
7 年多之前 回复
douye4051
douye4051 这是我的错误,而你需要传递授权检查功能并创建该功能来检查身份验证。
7 年多之前 回复
dongxiaoke2018
dongxiaoke2018 得到错误“令牌未定义”..
7 年多之前 回复
douli7841
douli7841 是的我正在尝试..将很快更新你
7 年多之前 回复
douzong5057
douzong5057 看到我更新的答案..
7 年多之前 回复
dongmu5106
dongmu5106 你的意思是我不能通过非ssl请求向ssl域发送ajax请求...?
7 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐