1

Hy,當我嘗試通過JavaScript從我的服務器/本地計算機訪問Microsoft Cognitive Services API時,出現以下錯誤。Microsoft認知服務JavaScript請求「訪問控制允許來源」

XMLHttpRequest cannot load http://api.projectoxford.ai/vision/v1.0/analyze?visualFeatures=Categories. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://myUrl.com' is therefore not allowed access. The response had HTTP status code 401. 

這是我的請求代碼:

function requestAPI(){ 
var params = { 
     // Request parameters 
     "visualFeatures": "Categories" 
}; 

$.ajax({ 
     url: "http://api.projectoxford.ai/vision/v1.0/analyze?" + $.param(params), 
     beforeSend: function(xhrObj){ 
      // Request headers 
      xhrObj.setRequestHeader("Content-Type","application/json"); 
      xhrObj.setRequestHeader("Ocp-Apim-Subscription-Key","{myKey}"); 
     }, 
     type: "POST", 
     // Request body 
     data: "{'url':'http://www.html5canvastutorials.com/demos/assets/darth-vader.jpg'}", 
    }) 
    .done(function(data) { 
     alert("success"); 
    }) 
    .fail(function() { 
     alert("error"); 
    }); 

}

在我的.htaccess我已經添加了:

Header add Access-Control-Allow-Origin "*" 
Header add Access-Control-Allow-Headers "origin, x-requested-with, content-type" 
Header add Access-Control-Allow-Methods "PUT, GET, POST, DELETE, OPTIONS" 

當我測試與hurl.it請求它作品。只是從我的服務器上它不。

+1

而且所有人都使用'Header set'? – Croises

回答

1

看起來您正在爲您的服務器設置CORS標頭,這意味着有人可以向您的服務器發出跨域請求。

Microsoft Cognitive Services必須在服務器上添加這些標頭,以便您可以向它們發出跨域請求,或者您必須使用JSONP

+0

「或者你必須使用JSONP」 - 微軟也必須實施。 – Quentin

相關問題