1

由于某些要求,我需要使用 jquery ajax 登录到站点.. 但是当我尝试这样做时.. 萤火虫控制台说这是 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

我错过了什么.. ?? 或者有没有其他选择来处理这个

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

4

1 回答 1

1

你没有错过任何问题在下面一行。

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

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

你可以做什么?

您可以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());
    }
});
于 2013-03-13T05:56:35.853 回答