以下の質問を読んでて、こうやればできるのでは?と思ってたことを
本当にやったら、できなかったので改めて解決策を質問させてください
元質問
##概要
BASIC認証配下のファイルのテキストデータを外部ドメインから取得したい
レスポンス側サーバー:Apache2.x (SSL)
root/
├ testBASIC
├ .htaccess ├ .htpasswd ├ secret.data
リクエスト側サーバー:Apache2.x
root/
├ testFolder
├ indexBASIC.html
.htaccess
<Files ~ "^.(htaccess|htpasswd)$"> deny from all </Files> AuthUserFile /home/users/0/****/web/testBASIC/.htpasswd AuthGroupFile /dev/null AuthName "Please enter your ID and password" AuthType Basic require valid-user Header append Access-Control-Allow-Origin: http://[リクエスト側ドメイン].jp Header append Access-Control-Allow-Headers: authorization
indexBASIC.html
JavaScript
$.ajax({ beforeSend: function (xhr) { xhr.overrideMimeType('text/html;charset=UTF-8'); xhr.setRequestHeader ("Authorization", "Basic " + btoa('myUser:myPass')); }, url: 'https://[レスポンス側ドメイン]/testBASIC/secret.data', type: 'GET' }).done((data, textStatus, jqXHR) => { console.log(data); }).fail((jqXHR, textStatus, errorThrown) => { console.log('エラーは:' + jqXHR.status); })
ブラウザで直に'https://[レスポンス側ドメイン]/testBASIC/secret.data'にアクセスして
ID/Pass入力すれば問題なくデータが表示されます
しかしリクエスト側サーバーのindexBASIC.htmlにアクセスした場合のhttpヘッダの様子は
以下の画像のになります
リクエストヘッダに"Authorization"を追加しているので
preflightが飛んでると思うのですがその時点でアウトになってしまってるようで
ajaxのfailハンドラの出力は”エラーは0”となってて
本リクエストの送信はされていないようです
レスポンス側の.htaccessにヘッダに追加すればいいかもと思って
上記のようにしてみてるのですが401となってしまいます・・・
どのようにすれば無事にデータファイルにアクセスできるでしょうか?
まだ回答がついていません
会員登録して回答してみよう