私はHTTP基本認証を持つサーバーを持っており、上記のHTTPサーバーのユーザー名とパスワードを知っているクライアントスクリプトを持っています。私はXHR
リクエストを使用しており、承認ヘッダーを設定するにはsetRequestHeader
です。このビットは、ブラウザがデフォルトのHTTPログインダイアログを表示しないようにします。ブラウザで生成されたリクエストにhttpヘッダーを設定しますか?
request.setRequestHeader('Authorization', authInfo);
これはAJAXのためがを要求しますが、場合には、私が言及したサーバーからファイルをダウンロードしたいと私はAJAXなしを行くと、ブラウザが要求自体を作成する場所、JavaScriptからwindow.location.href
のようなものを使用するように強制しています正常です。このリクエストにはAuthorizationヘッダーが含まれていないので(ブラウザはログインダイアログを表示し、実際のサーバーのログイン情報のbase64を保存した後にのみ、リクエストごとにAuthorizationヘッダーが自動的に追加されます)、ブラウザはHTTPログインダイアログを表示します。
したがって、ヘッダーをに設定する方法はありません。非アヤックスリクエストはブラウザーで作成しましたか?
[CSRF攻撃](http://en.wikipedia.org/wiki/Cross-site_request_forgery)の認証クッキーが悪用される可能性があることにご注意ください。 – user123444555621
ありがとうございました。 残念ながら、私はサーバー側でスクリプトインタープリタを持っていないので、私は第二の方法はありません。 – ggat
最初のアプローチに関するちょうど1つの注意点は、user:passwordなどのパスを渡す方法です(base64などでコード化されています)。 これは、たとえばbase64でエンコードされたユーザーとパスワードをURLに送信し、この文字列をサーバー側でデコードし、apacheで新しいURLをリダイレクトすることで実現できると思います。これはダウンロードユーザーであるため、ブラウザのアドレスバーにデコードされたURLは表示されません。 しかし、私はおそらくこれを行うネイティブな方法があるのかと尋ねています。 – ggat