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

时间:2013-03-13 05:49:08

标签: php javascript ajax jquery

由于某些要求,我需要使用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

我错过了什么.. ??或者还有其他替代方法来处理这个

感谢您的时间..任何帮助将不胜感激......

1 个答案:

答案 0 :(得分:1)

你没有遗漏任何问题在下面。

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

您正在使用ajax发送SSL请求,我认为它不起作用,因为它违反了Javascript的策略,因为它没有看到与非SSL网址相同的来源请求SSL。

你能做什么?

您可以从服务器添加Access-Control-Allow-Origin标头。

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

Read More

尝试使用设置crossDomain : truedataType: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());
    }
});