2016-06-16 40 views
0

我正在從離子應用程序的調用與下面的代碼: -

var req={ 
 
\t \t \t method: "GET", 
 
\t \t \t url: "<Some URL>", 
 
\t \t \t headers:{ 
 
\t \t \t "Authorization": "Basic YjEyMDMwOmJjb25lQDEyMw==" 
 
\t \t \t } 
 
\t \t } 
 
\t \t $http(req).then(function success(){ 
 
\t \t \t alert("Yesss"); 
 
\t \t },function failure(a,b,c){ 
 
\t \t \t alert("nahhh"); 
 
\t \t })
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>

下面的圖像所示在OPTIONS調用中失敗。

Failing call in console

而相同的呼叫工作正常,從SAPUI5這需要CORS照顧內部與oModel.Read()操作。 下面是成功的調用截圖: -

Passing call in console

我到底做錯了什麼?或者甚至有可能從AngularJS應用程序進行基於CORS的調用?

EDIT1:

我只注意到,如果我給報頭 - 授權標頭的其餘部分將被忽略,並接受text/plain的...等 但如果授權頭是不存在的,它需要去接受和其他參數,但由於我的服務是基於身份驗證,它會需要這個頭,現在我該如何解決這個問題?請注意,如果我通過「授權」標頭或任何其他隨機標頭,如「doijwoid」,請求標頭調用中不會顯示其他標頭,但是當我省略這個頭文件,其他頭文件如「Accept」就像寫在代碼中一樣。

$.get({url:"<SRV URL>",headers:{"Accept":"application/json"}}, function(data, status){ 
 
      alert("Data: " + data + "\nStatus: " + status); 
 
     });

[Ajax調用未經授權報頭] [3]

[調用使用授權報頭和接受爲好,但接受不採取頭] [4]

+0

根據我的理解,您可以使用基於CORS的來自javascript的調用(無論是角度還是任何其他框架),只要服務器端配置允許CORS完成即可。 –

+0

是的,也許我需要跳過OPTIONS調用,因爲當我嘗試使用$ http.JSONP時,它返回200OK並且沒有OPTIONS調用,但是我的代碼進入錯誤功能而不是成功。 – RohitAneja

+1

您的請求標題看起來完全不同,似乎缺少授權字段,並且具有名爲'access-control-request-headers'的附加字段而不是值「authorization」,所以代碼有問題,但我不熟悉足以用離子框架來說明究竟是什麼。 –

回答

0

你在服務器上檢查過CORS嗎?