2016-10-06 3 views
0

私はクラスレベルに次のように帰属コントローラを含むC#のWeb APIを持っている:角度http.get + WEBAPI = CORS障害

[EnableCors(origins: "http://localhost:51664,http://localhost,...", headers: "*", methods: "*")]

を私はAJAX呼び出しを行うことができ、例えばlocalhostを整形してください。

今、私はAngularJSで始めていますし、http.get-方法は、次のメッセージで失敗します。

のXMLHttpRequestがhttp://localhost:8081/DividendsManager.Web.Api/api/securities/GetSecurities?yearsDividendsDontDecrease=40をロードすることはできません。要求されたリソースに「Access-Control-Allow-Origin」ヘッダーが存在しません。したがって、原点「ヌル」はアクセスが許可されません。

これは私AngularJSコードです:エントリ:フィドラーで

<script> 
 
     var myApp = angular.module('myApp', []); 
 

 
     myApp.controller("myController", function($scope, $http) { 
 

 
      var onSuccess = function(data, status, headers, config) { 
 
       $scope.data = data; 
 
      }; 
 

 
      var onError = function(data, status, headers, config) { 
 
       $scope.error = status; 
 
      } 
 

 
      var promise = $http.get("http://localhost:8081/DividendsManager.Web.Api/api/securities/GetSecurities?yearsDividendsDontDecrease=40"); 
 

 
      promise.success(onSuccess); 
 
      promise.error(onError); 
 
     }); 
 
</script>

、私はAngularJS-HTTP-GETのヘッダは、要求が "ヌル起源" を持っていることを、見ることができますこれは問題に関連しているようです。私は、代わりに "null"の値が "http://localhost"になると思う、それは動作するはずです。

誰でもお手伝いできますか?

ありがとうございました!

+0

ポートが異なるため、CORSサーバ側を実装する必要があります。それはブラウザーが関係している限り、別の起源を構成します。 – charlietfl

答えて

0

[EnableCors]の属性では、headers: "", methods: ""headers: "*", methods: "*"に変更する必要がありますか?

また、origins URLの末尾にスラッシュを含めないでください。

+0

こんにちはkimbaudi、 アンワーさんに感謝します。属性では、私は "*"ではなく ""で行った。入力ミスを申し訳ありません。また、最後にスラッシュを使用しませんでした(http:// localhost /ではなく、http:// localhost)。前述のように、他のAjaxコールはうまく動作します。ちょうどAngularJS問題のようです。 – user2145393

+0

HTTPヘッダーレスポンスを投稿できますか?あなたは 'Access-Control-Allow-Headers:Content-Type''アクセス制御許可メソッド:: GET、POST、OPTIONS'のようなものを手に入れていますか? 'Access-Control-Allow-Origin:*'?あなたのApiControllerで許可されたHTTPメソッドを設定しなければならないかもしれません: 'public HttpResponseMessage Get(){...}' – kimbaudi

+0

こんにちはkimbuaid、 ありがとうございました。しかし、今私は自分の間違いを認識しており、次回まで動作します) 詳細は私の答えを見てください。 – user2145393

0

私たちはプロジェクトで同じ問題を抱えていました。さまざまなWebサイトからの提案と同様に多くのオプションを試しました。しかし、私たちのケースで働いている/作業中のものは、hereのようにカスタムCORSプロバイダを作成しています。

+0

こんにちはサム、 私は問題がクライアント側にあると思う、htmlヘッダーの原点の属性がnullです。これを否定することにより、サーバーは正常に動作します。 AngularJS以外の他のajax技術を使用すると、計画どおりに動作します。 – user2145393

0

Upppps!

今日、新鮮な空気の中を走っていると、私は突然、Originがnullだった理由を突き止めました。私がIISでWebサイトを呼び出すのではなく、そのファイルを直接ファイルシステムで開いたからです。確かにそうする際には有効なURLはなく、OriginはWebサーバーではnullでした。