2017-03-19 131 views
0

我試圖做一個簡單的jQuery Ajax調用API:jQuery的AJAX調用會導致錯誤狀態403禁止

我的代碼:

$.ajax({ 
     origin: "*", 
     url: 'http://example/test', 
     type: 'get', 
     contentType: 'application/json; charset=utf-8', 
     dataType: 'jsonp', 
     crossDomain: true, 
     beforeSend: function (xhr) { 
         xhr.setRequestHeader("API_KEY", 'xxx'); 
         xhr.setRequestHeader("Authorization", 'xxx'); 
        }, 
        success: function (data) { 
        }); 
       }, 
       error: function() { 
      } 
     }); 

API和授權的正常工作和返回的權利數據,但當我從JQuery ajax調用它時給出錯誤403禁止。

響應頭:

HTTP/1.1 403禁止 緩存控制:無緩存 附註:無緩存 內容類型:文本/ JavaScript的; X-AspNet-Version:4.0.30319 X-Powered-by:ASP.NET 日期:2017年3月19日(星期日)13:00: 19 GMT 的Content-Length:127個

請求報頭:

接受:/ 接受編碼:gzip,緊縮,SDCH 接受語言:EN-US,EN ; q = 0.8 緩存控制:無緩存 連接:保持活躍 主持人:SP16-應用:2525 雜注:無緩存 的Referer:http://xxx/test

+3

你有一個語法錯誤的位置: beforeSend:功能(XHR){ xhr.setRequestHeader( 「API_KEY」,「XXX; xhr.setRequestHeader( 「授權」, 'XXX');} , – Monicka

+0

你能發佈你正在收到的響應頭文件? – abhishekkannojia

+0

[jQuery AJAX調用可能導致錯誤狀態403重複](http://stackoverflow.com/questions/36666256/jquery-ajax-call-results-in-error-status-403 ) –

回答

0

請注意,你不能jsonp發送請求頭,這是一個腳本請求。您確定要jsonp而不是json

GET沒有請求contentType因爲沒有正文內容被髮送。

而且,你有一個錯字這裏,但是,我想,這對StackOverflow的答案只是一個錯字:

xhr.setRequestHeader("API_KEY", 'xxx; 

變化

xhr.setRequestHeader("API_KEY", 'xxx'; 

同時,請參閱this answer

+0

是的,這是錯誤的, –

+0

是的,我的意思是jsonp不是jsonp –