2017-12-13 12 views
0

Azureストレージアカウントに画像をアップロードしようとすると問題が発生します。問題は、サーバーに要求を正しく行うためのconfigヘッダーである。私は自分自身に要求を行って配達員とのテストにこれを持っているし、魔法のように動作しますが、$で角度からそれをやろうとしているときhttp.putそれは私に

400(認証情報は、で与えられていないエラーを与えています正しい形式。Authorizationヘッダの値を確認してください。)

これは私がきちんと を私のヘッダーを設定への方法を見つけこれらの記事を読んでいる私のjavascript関数

uploadToAzure: function (urlToUpload, fileType, file) { 
    var formattedUrl = urlToUpload.split('"')[1]; 
    var fecha = new Date(); 
    var config = { 
     headers:{}} 
    config.headers = { 
     'x-ms-blob-type': 'Blockblob', 
     'x-ms-blob-content-type': fileType, 
     'x-ms-date': fecha, 
     'x-ms-version': '2017-04-17', 
     //'Host': 'necesito1.blob.core.windows.net', 
     'Authorization_Token': 'SharedKey <myAccount>:<MyPublicAccessKey>' 
     }; 
    return $http.put(urlToUpload, file._file, config); 

です//// Stackoverflow answer

私はそれが

enter image description here

を助けている場合配達員からこのヘッダを取得し、私はここで何かが足りないのですか?どんな助けもありがとう。

答えて

0

これでわかりました。事は、私が投稿したjavascriptが構成ではなく、ヘッダーを設定していた方法で間違っているということでした。 もう少し私は、ヘッダーを設定すると、私はそれをやっていた方法は仕事

return $http.put(urlToUpload, file._file, config); 

つもりではなかったことがわかっ掘り私は$ httpProviderため迎撃サービスを上書きしてしまいました。何をする必要があなたが必要とするので、あなたはすべてのためにそれをやっている、これを行う場合には、クライアント側から行われています要求していることを考慮に入れ、この

angular.module('yourAppName', ['yourInyectedModules']).config(['$httpProvider', function($httpProvider) { 
$httpProvider.interceptors.push(function ($q) { 
    return { 
    'request': function (config) { 
     //Do your custom processing here 
     config.headers = { 
      'x-ms-blob-type': 'Blockblob' 
     }; 
     return config;  
    }, 

    'response': function (response) { 
     // same as above 
     return response; 
    } 
    }; 
});}]); 

ようapp.jsファイルで、この機能を無効にされあなたの要求を処理して特定のものに対してのみ設定します。

私の変数「urlToUpload」(私にはファイルをアップロードする権限のあるURLを与えてくれました)に、自分のAuthorize URLが正しい形式で既に存在していたので、許可は必要ありません。タイプは自動的に継承されたので、設定する必要はありません。

あなたのお返事ありがとうございますAaron Chen!

1

次のようにAuthorizationヘッダのフォーマットは次のとおり

Authorization="[SharedKey|SharedKeyLite] <AccountName>:<Signature>" 
  • Authorizationヘッダの名前がAuthorization、ないAuthorization_Tokenなければなりません。

  • 署名文字列はアクセスキーではなく、ストレージアクセスキー、リクエストヘッダーなどに対して生成される必要があります。それを構築する方法については、this documentationを参照してください。

もう1つのオプションはShared Access Signature (SAS)です。 Azure storage authorization failed or format is wrongを参照してください。

関連する問題