2009-09-15 ふひー
明日は病院。
◆ [日記][ネタ][プログラム] WEBrick::HTTPProxyServerでERROR bad URI
ruby話。
400 BAD Requestが出て、困ってたんです。某所でテスト中な。どこかは聞くな。いやほら、:RequestCallbackで色々操作できるのでテストで使うには便利なのさ。
使ったのは単純にこのproxyの一番上にある一番簡単なやつな*1。
で、色々調べた結果、URLに%uXXXX*2ってのが入ってるのが原因でした。
JavaScriptでescapeってやった結果、IEだと日本語が%uでUnicode変換されちゃうんですな。
んで、lib/ruby/1.8/uri/common.rbを見れば分かるんだけど、QUERY = "#{URIC}*"と宣言されてるんですな。んで、URIC = "(?:[#{UNRESERVED}#{RESERVED}]|#{ESCAPED})"でESCAPED = "%[#{HEX}]{2}"なので*3、結果としてQUERYには%uXXXXを含めるとQUERYじゃねーよアホと言われると。
回避策としては
1. JavaScriptから投げる時にescapeじゃなくてencodeURIかencodeURIComponentを使うが良いらしい。これだと全部%XX*4に変換されるので、とても楽ちん。そしてこれがおそらく正解。
2. 思い切って、lib/ruby/1.8/uri/common.rbのQUERY = "#{URIC}*"をQUERY = "(?:#{URIC}|%u[#{HEX}]{4})*"に書き換える。アプリ側を書き換えられない時に使うと何とかなるかもしれん。
3. もっと思い切って、lib/ruby/1.8/uri/common.rbのQUERY = "#{URIC}*"をQUERY = ".*"に書き換える。アプリ側がさらに駄目な文字を吐いてきた時に使うと何とかなるかもしれん。
2.と3.は推奨しません。どんな副作用があるか未確認なり。
というか、RFC1738を読む限り、%uXXXXでURLを渡すのはRFC違反な気がするんだ(間違ってたら誰か突っ込んで)
ダレダこんな面白実装したやつ(犯人はIE(笑))
時々クライアント側で、escapeでIE/それ以外で%uXXXXに無理矢理変換して、サーバ側で%uにも対応させるコードを書いてあるのを見るが……なんかおかしくね?(encodeURI使ってどっちでも%XXにした方が簡単じゃね?的な意味で。RFC的にはそっちが正解っぽいし)
……調べてて、あまりにもRFCに忠実なlib/ruby/1.8/uri/common.rbの書き方に感動しましたとさ。
そして、上の3.にしないと通らない某所のアプリにビックリしましたのことさ(笑)
あとさー、某所のアプリさー。いくら(ピー)だからって、クエリーにjavascript:とか../ほげほげ/とか書いてそれを直接HTMLに書き込むのやめようぜ?(笑) セキュリティホール以前の問題だろこれは(笑)
◆ [情報][ネタ] プログラマーには、コーディングの生産性で10倍、コードレビューの速度では6倍もの能力差があるという
むしろそれくらいしか差がないのかと。
デバッグの手間を含めるとあと何桁かは変わる気がします。
◆ [情報][ネタ] Microsoft Updateが遅くなるトラブルが発生
再送要求を送信しても20秒間応答がなく,その後MSSが536バイトのTCPパケットが送られてくる。TCPハンドシェークのオプションでMSSを 1414バイトに指定しているのにもかかわらず,「Microsoft UpdateサイトからMSSが1460バイトで網内分割禁止のフラグを立てたTCPパケットが送られてきて,フレッツ網内の手前で廃棄されているように見えた」
あかんがな。
某チャットのあるサーバが時々タイムアウトするのもMMS周りかなぁ。
◆ [日記] 最近ツインテール属性に目覚めた。
模様だ。
pixivでブックマークしてる知らないキャラはツインテールが多い事に気づいた。
いや、髪の毛をあげてる姿に弱いのか? でもツインテールの方が気になるな。
◆ [ネタ][アニメ] 【咲-Saki-】アニメの結果にギャーギャー言うな(リンク先ネタバレ有り)
まぁ、ある意味予想通りでしたけどね(笑)
◆ [情報] 出版不況下で独り勝ち、「涼宮ハルヒ」にみる角川の成長モデル
角川頑張れ
◆ [情報][メモ] 日本企業を見限ったインドの“システム屋”から学んだこと
興味深かったので。
◆ [ネタ] 温暖化ガス「25%減」目標、海外排出枠も活用 民主
海外にお金ばらまきますよ宣言来た
◆ [ネタ] ひぐらしの雛見沢分校が取り壊しだなんて、嘘だッ!
あらら。
◆ [情報][ネタ] 携帯端末3社、統合を発表「NECカシオモバイル」に
社名から日立消えたー(笑)
◆ [情報] 見えない相手が、“日本の水”を狙っている
こえぇぇぇぇ……
◆ [情報] なぜ議員会館改装 3400万円、使うの10カ月だけ
こういう無駄遣いを無くそうぜ……
◆ [情報] 「派遣叩き」がもたらす現実……企業は「派遣を減らしパートやアルバイトを増やす」意向
あかんがな。
◆ [ネタ] 「ニヤニヤできるDVD!好みの女の子が好きな声優さんの声で告白してくれます!」
4人のヒロインに「能登麻美子」「辻あゆみ」「堀江由衣」「平野綾」を割り当てられるこれまた特殊なソフト。4人全員堀江由衣も出来ます
これは声優ファンにはたまらない!
◆ [ネタ] 澪おっぱいマウスパッドをバナナと一緒に紹介したら10万PV超えた
わはははは(笑)