jQuery AJAX自定义标题

Den*_*nny 10 ajax jquery google-chrome

我正在尝试对iContact API执行请求,该请求需要使用自定义标头进行身份验证(http://developer.icontact.com/documentation/authenticate-requests).这是我的代码:

$.ajax({
        type: "GET", 
        url: "https://app.icontact.com/icp/a/",
        contentType: "application/json",
        beforeSend: function(jqXHR, settings){
                jqXHR.setRequestHeader("Accept", "application/json");
                jqXHR.setRequestHeader("Api-Version", iContact_API_version);
                jqXHR.setRequestHeader("Api-AppId", iContact_appID);
                jqXHR.setRequestHeader("Api-Username", iContact_username);
                jqXHR.setRequestHeader("API-Password", iContact_appPassword);}
});
Run Code Online (Sandbox Code Playgroud)

由于某种原因,请求没有通过.但是,当我手动执行相同的请求(使用Chrome REST控制台)时,它可以正常工作.如果我取出自定义标头(API-*),请求会通过但当然身份验证失败,我会回到常规HTML页面.

我切换到Firefox并检查了请求/响应标头:

请求:

Host    app.icontact.com
User-Agent  Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12
Accept  text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language en-us,en;q=0.5
Accept-Encoding gzip,deflate
Accept-Charset  ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive  115
Connection  keep-alive
Origin  http://184.72.61.244
Access-Control-Request-Me...    GET
Access-Control-Request-He...    api-appid,api-password,api-username,api-version
Run Code Online (Sandbox Code Playgroud)

响应:

HTTP/1.1 302 Found
Date: Tue, 14 Jun 2011 23:43:56 GMT
Server: Apache/2.2.9 (Debian)
Set-Cookie: intellicontact_phpsess=1c7ca333017b47f46edd893dae584781; path=/; domain=.icontact.com; secure; HttpOnly
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Location: https://app.icontact.com/icp/login/sentry.php?relurl=https%3A%2F%2Fapp.icontact.com%2Ficp%2Fa%2F&sess=
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Length: 20
Connection: close
Content-Type: text/html; charset=utf-8
Run Code Online (Sandbox Code Playgroud)

任何想法在这里出了什么问题?

谢谢!

Ell*_*sis 0

奇怪的是,您在响应中收到 302(重定向)。您是否尝试过使用 Ajax 功能记录错误来解决问题?这是我使用的一个例子。

console.log(" call back url :"+ callBackURL);
               $.ajax({
                    url: callBackURL,
                    type: 'post', //'GET' in your case    
                    contentType: 'application/json; charset=utf-8',
                    dataType: 'json' , // explicitly mentioning datatype
                    success: function(json) {
                        console.log(" reponse :"+ json);

                    },
                    error: function (XMLHttpRequest, textStatus, errorThrown) {
                            console.log("error :"+XMLHttpRequest.responseText);
                    }


                }); 
Run Code Online (Sandbox Code Playgroud)