読者です 読者をやめる 読者になる 読者になる

Firefox3の特権付XMLHttpRequestは(POSTの場合)バックグラウンドで実行され認証ダイアログなどがデフォルトで出ない

Firefox Greasemonkey

Firefox3beta5のGreasemonkeyでGM_xmlhttpRequest使うときにBASIC認証ダイアログが出ない件の回避方法 - 0xFF関連。

ちょうどこの件の回答がXHR auth (Was: Greasemonkey 0.8 Release Candidate) - greasemonkey-dev | Google グループに投稿された。

Firefox3だとGM_xmlhttpRequestしたとき認証ダイアログでないんだけどー?って質問に、Greasemonkeyの問題じゃなくて一般的な変更による影響で。chrome特権なXMLHttpRequestはデフォルトでバックグラウンド処理で実行されるようになったんだよー。と。

詳細は、
XMLHttpRequest | MDN
383430 – Add API to XMLHttpRequest to provide convenience for background requests
特にbugzillaのほうより、

2. Do not get an nsIAuthPrompt by default, since we don't want auth dialogs to
pop up randomly.

とあって、不規則にダイアログが出るのは望ましくないからデフォルトでダイアログが出るようにはしないでねってことみたい。


困った。
一般的な回避策は XMLHttpRequest#mozBackgroundRequest をfalseにすれば良いんだけど、このプロパティはGM_xmlhttpRequestでは弄れないのでどうしようもない。Greasemonkeyがこれを弄れるようにしてくれるのを期待するしかないのかな。

[追記]
onozatyさんがdel.icio.us IncSearchとGoogle Bookmarks IncSearchで使ってると書いていたので、確認してみた。で、del.icio.us IncSearchではBASIC認証のダイアログが出てきた。
ちょっとソースみたところdel.icio.us IncSearchはXMLHttpRequestをPOSTではなくGETで投げている。Twit Fav commandではPOSTにしているからこれっぽいなと思って、試しにGETにしてみたところBASIC認証ダイアログが出てくれた。(ちなみにGETのときとPOSTのときでダイアログの出方が違うのね) といわけで、とりあえずタイトルにPOSTの場合と追記。

うーん、しかしTwitterの場合はGETを使うとAPI制限に引っかかるとかあるみたいだから微妙だなー。
[/追記]