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調用中失敗。
而相同的呼叫工作正常,從SAPUI5這需要CORS照顧內部與oModel.Read()操作。 下面是成功的調用截圖: -
我到底做錯了什麼?或者甚至有可能從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]
根據我的理解,您可以使用基於CORS的來自javascript的調用(無論是角度還是任何其他框架),只要服務器端配置允許CORS完成即可。 –
是的,也許我需要跳過OPTIONS調用,因爲當我嘗試使用$ http.JSONP時,它返回200OK並且沒有OPTIONS調用,但是我的代碼進入錯誤功能而不是成功。 – RohitAneja
您的請求標題看起來完全不同,似乎缺少授權字段,並且具有名爲'access-control-request-headers'的附加字段而不是值「authorization」,所以代碼有問題,但我不熟悉足以用離子框架來說明究竟是什麼。 –