5

Azure ストレージ エミュレーターを使用して、html5、angularjs アプリケーションのアップロード機能をテストしようとしています。何らかの理由で、localhost の azure で生成された URL にファイルを送信するたびに、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 をセットアップする必要がありますか? もしそうなら、エミュレーターから上記のコードが機能しなかったため、どのようにこれを行う必要がありますか?

4

1 に答える 1

0

MSDNのドキュメントに従って、明確にしたかったことの1つ

"Azure ストレージ サービスは、Blob、Table、および Queue サービスの Cross-Origin Resource Sharing (CORS) をサポートしています。ファイル サービスは、バージョン 2015-02-21 以降の CORS をサポートしています。"

そしてさらにその先へ

Set Blob Service Properties、Set File Service Properties、Set Queue Service Properties、および Set Table Service Properties を呼び出して、ストレージ サービスごとに CORS ルールを個別に設定できます。サービスの CORS ルールを設定すると、別のドメインからサービスに対して行われた適切に認証されたリクエストが評価され、指定したルールに従って許可されるかどうかが判断されます。

したがって、サービスがファイル サービスなのか、単なる BLOB サービスなのか知りたいのですが、提供されたコード スニペットに従って、BLOB サービスに対して CORS を有効にしているようです。ただし、アップロード機能のコード スニペットを配置していません。AJAX 経由で行う場合は、ヘッダー タイプを Azure サービスの blob タイプに設定する必要があります。そうしないと、クロス オリジン リクエストがリクエスター側でブロックされる可能性があります。サービス応答ヘッダー タイプと一致します。

これらの2つのリンクも確認してください

Windows Azure サービス CORS の例

Azure ストレージ サービスの CORS

于 2015-12-30T23:12:36.227 に答える