« ブログを長続きさせる5つのコツ | メイン | ATOK »

jQueryでBASIC認証のAjax通信

最近AIRアプリ(HTML + Ajaxの方)でTwitterクライアントを作ろうと思って色々やっていて、発言を投稿するとかその辺の認証が必要なところはBASIC認証での認証が必要なことが分かりました。

通常のHTMLページであれば、Twitter以外のドメインのページからTwitterのドメインに対してHTTPXmlRequestでAjaxでの通信を試みても、クロスドメインの制約にひっかかってしまうわけです。

ところが、AIRアプリであればこのクロスドメインの制約がなくなるので、通信は成功するはずだったんです。

で、HTTPXmlRequestでBASIC認証するには2通りの方法があって、1つはopenメソッドの引数にユーザIDとパスワードを渡す方法で、もう一つはユーザIDとパスワードをJavaScriptでBase64エンコードを行いAuthorizationヘッダに格納する方法。

JavaScriptのBase64エンコードがちょっと面倒だったので、jQueryの$.ajaxメソッドでBASIC認証の通信ができないものかとjQuery1.2.3のソースを見ていたら、2761行目に、

xml.open(s.type, s.url, s.async, s.username, s.password);

って書いてありました。1.2.1のソースにはs.usernameとs.passwordがなかったので、最近追加されたんですかね。

やったやったと喜んで、これで実装してみたんですが、動かず。

なんでだろ・・・。AIR内蔵のブラウザがこの機能をサポートしてないのかな。うーん。