2013-08-27 4 views
6

に認証を追加します。単純な認証を持つクライアントのDEVサーバーにコードを移動するまでは、すべて問題ありません。プリフライトリクエストがサーバーに送信されたときに認証情報をフォームに埋め込む方法はありますか?FineUploader - 私は、クロスドメインのアップロードプロジェクトでFineUploader 3.7を使用しているヘッダ

しかし私は働いていない、ヘッダーで基本認証を埋め込むしようとしています。以下のコードを参照してください:

$.ajaxSetup({ 
    headers: { 
     'Authorization': "Basic YZVjaGFmbWluOkNieWxjBTY3" 
    }, 
    beforeSend: function (jqXHR, settings) { 
     jqXHR.setRequestHeader('Authorization', 'Basic YZVjaGFmbWluOkNieWxjBTY3'); 
    } 
}); 

そしてさらに、私は、カスタムヘッダーと運を設定しようとしています

var manualuploader = new qq.FineUploader({ 
    customHeaders: { 
    'Authorization': 'Basic YXVjaGFkbWluOkNieWxjZTY3' 
    },.... 

答えて

9

あなたcustomHeadersオプションが適切に定義されていません。 customHeadersrequest option documentationで説明するように、requestオプションのプロパティです。

あなたのファインアップローダ統合コードの代わりに次のようになります。

var manualuploader = new qq.FineUploader({ 
    request: { 
     endpoint: "path/to/your/server", 
     customHeaders: { 
      "Authorization": "Basic YXVjaGFkbWluOkNieWxjZTY3" 
     } 
    } 
}); 

をまた、jQueryのajaxSetupがファインアップローダのAJAX/XHR呼び出しには影響を与えませんのでご注意ください。 Fine UploaderはjQueryを内部的に使用しません。オプションjQueryのプラグインファインアップローダにより提供単にjQueryのプラグインとしてjQueryとjQueryのプラグインに関連付けられた共通の構文をサポートすることによって、それが容易に使用できるように、ネイティブのJavaScriptライブラリをラップします。

また、IE9と古いが、アヤックス/ XHRを経由してアップロードをサポートしていないため、これらのヘッダは、アップロードIE9で要求し、古いと一緒に渡されませんのでご注意ください。これらのブラウザでは、iframeをターゲットとするフォームが送信されます。フォーム送信の場合、カスタムヘッダーを要求に関連付ける方法はありません。

+0

こんにちはレイ、あなたのフィードバックのためのおかげで、しかし、それはまだ働いていません。ファイルのアップロード中に2つの要求があるため。最初の「プリフライト」要求は401認証エラーで失敗しました。私はFiddlerのヘッダーをチェックしました。そこにAuthorizationヘッダーはありません。私は別のことを忘れましたか? – Peng

+0

プリフライトにはカスタムヘッダーが含まれません。ファインアップローダーはこれを支配しません。それはCORSの働きです。サーバがプリフライトを正しく処理している場合は、元のリクエストはブラウザによってAuthorizationヘッダーとともに送信されます。クロスオリジン環境で作業している場合、サーバーはプリフライト(OPTIONS)要求に正しく応答するように設定する必要があります。 –

+0

ありがとうRay。遅れの応答のために申し訳ありません....そのプリフライトOPTIONSリクエストに関するもう1つの問題、私たちのクライアントは、httpメソッド "OPTIONS"が彼らのサーバで禁止されていると言いました。彼らは私たちにこの "OPTIONS"リクエストを削除するよう頼んでいます。しかし、あなたの最後のコメントによると、私は "OPTIONS"をCROSの状況では削除できないと思う。私は正しい? – Peng

関連する問題