1

JQuery を介してローカルの Rest API からデータに正常にアクセスできますが、JQuery を介して (他のドメインでホストされている) リモートの Rest API からデータにアクセスしようとすると、未定義のエラーが発生しました。クロスドメインの問題を解決するにはどうすればよいですか?

これは私がJQueryを使っている方法です。

function GetCompanyName(id) {
    jQuery.support.cors = true;
    $.ajax({
        url: 'http://novacompanysvc.azurewebsites.net/api/companies',
        type: 'GET',
        data:{ id:id },
        dataType: "text/xml",
    success: function (data) {
       if (window.DOMParser)
          {
          parser=new DOMParser();
          xmlDoc=parser.parseFromString(data,"text/xml");
          }
        else // Internet Explorer
          {
          xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
          xmlDoc.async=false;
          xmlDoc.loadXML(data); 
          }
       WriteResponse(data);
     },
     error: function (x, y, z) {
            alert('error');
     }
  });
}
4

3 に答える 3

1

このエラーは、アクセスしている API エンドポイントがCORSを実装していないために発生します。コードを Chrome で実行してコンソールを見ると、次のエラーが表示されます。

XMLHttpRequest cannot load http://novacompanysvc.azurewebsites.net/api/companies?id=1. Origin http://fiddle.jshell.net is not allowed by Access-Control-Allow-Origin.

解決策は、API エンドポイントを変更して、Access-Control-Allow-Originヘッダーをワイルドカード*または JavaScript コードを使用するページが提供されるドメインに設定することです。

于 2013-10-13T10:49:27.077 に答える