2015年9月 のアーカイブ
Mobile SafariのaudioタグでBASIC認証下の領域のmp3が再生されない
2015年9月15日
環境
iPhone5
iOS 8.4.1
他の環境はチェックしていない。
現象
audioタグで音声を再生させるテストページを作成。以下のようなざっくりシンプルなソースを書いた。
<audio src="./test.mp3" id="sound"></audio> <p id="play">PLAY</p> <script> $("#play").click(function(){ document.getElementById("sound").play(); }); </script>
PLAYをタップしたらtest.mp3が再生される仕組みなのだけど、どうしても音が出ない。PCのブラウザでアクセスした場合は問題なく再生される。
間違った方向に悩む
これはmp3のエンコードがおかしくて音が出ないのでは無いか?という見当違いなことを考えてビットレートを変えてみたり、ステレオをモノラルにしてみたり、mp3をwavにしてみたりと試したのだが状況は変わらず。もちろんすべてPCでは再生される。
WEBサーバのMIME設定が漏れてるかな?と思いいじってみるも、元々PCでは再生されているわけでそんなはずもなく。
BASIC認証が足かせだった
なんかおかしいなあ、ということで試しに別サーバに置いたmp3を指定してみたら再生された。別サーバなので、環境は全然違うのだけど、これはBASIC認証なんじゃないか?ということに気付き、試しにBASIC認証外にソース一式持って行ったらあっさり動いた。
iOS関係のバグみたいだが
そもそもBASIC認証下でmp3再生するような要求は、公開前のテストサイトくらいなものなので、まあそういう不具合あっても仕方がないですよね、レアケースですよね、なんて思った次第。
ざっと検索すると似たような事例がiOSのバグとしてあるようだけど、いつまでたってもBASIC認証を記憶するようにならないMobile Safariに、多くを期待しても仕方がないのでは、という風に考えている。