2015-12-21 5 views
5

Azureストレージエミュレータを使用して、html5、angularjsアプリケーションのアップロード機能をテストしようとしています。なんらかの理由で、私がazureで生成したlocalhost用のURLにファイルを送信するたびに、CORSエラーが発生します。今、クラウドインスタンス上で、私は、CORSのサポートを追加するために、次のコードを使用している、それが動作します:ストレージエミュレータでアップロードをテストしようとしているときにCORSエラーが発生しました

blobServiceProperties.Cors.CorsRules.Add(new CorsRule() 
{ 
    AllowedHeaders = new List<string>() { "*" }, 
    //ExposedHeaders = new List<string>() {"*"}, 
    AllowedMethods = CorsHttpMethods.Post | CorsHttpMethods.Put | CorsHttpMethods.Get | CorsHttpMethods.Delete, 
    AllowedOrigins = new List<string>() { "http://example.com" }, 
    MaxAgeInSeconds = 3600 
}); 

私はこれが許可されていない示すエラーを受け取るエミュレータのためにこれを実行しようとします。エミュレータ用にCORSもセットアップする必要がありますか?もしそうなら、私は上記のコードがエミュレータからはうまくいかなかったので、どうすればいいですか?私は明確にしたかった

+0

、どこのコードのこの部分が動作していることを確認していますか? – haim770

+0

WebApiConfig、私は2つの別々のソリューションを持っています.1つはWeb側、もう1つはWeb APIプロジェクト用です。主な問題は、エミュレータからのテスト中にCORSエラーを回避することです。 – user1790300

+0

エミュレータ上でWebプロジェクトを公開すると、クラウドにそれらが表示されません。 – user1790300

答えて

0

一つのこと、MSDNのドキュメントごとなど

は「Azureのストレージサービスは、ブロブ、テーブル、キューサービスのためのクロスオリジンリソース共有(CORS) をサポートしています。ファイルサービスが をサポートしていますCORSバージョン2015-02-21で始まる」

そしてさらにその

あなたがCORSは、セットサービスプロパティファイルの設定ブロブサービスのプロパティを呼び出すことにより、ストレージ・サービスごとに個別にルールを設定することができ

、セットのキューサービスのプロパティ、およびセットテーブルサービスへ

プロパティ。サービスのCORSルールを設定すると、別のドメインのサービスに対して適切に認証された要求が評価され、指定されたルールに従って許可されているかどうかが判断されます。

サービスがファイルサービスかblobサービスかどうかは、提供されたコードスニペットに従ってBLOBサービスのCORSを有効にしているように思えます。しかし、あなたはAJAX経由でそれをやっているなら、アップロード機能のためにコードスニペットを書いていませんでした。ヘッダタイプをBLOBタイプのAzureサービスに設定する必要があります。そうでなければクロスオリジンリクエストはリクエスタの終了時にブロックされますサービス応答ヘッダータイプと一致します。

は、これら二つのリンクだけでなく

Windows Azure Service CORS example

CORS for Azure Storage Service

関連する問題