最近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内蔵のブラウザがこの機能をサポートしてないのかな。うーん。