いつきコンテンツ

ヘルプ

カウンター


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に書き込むのやめようぜ?(笑) セキュリティホール以前の問題だろこれは(笑)

*1 嘘です。本当は一番難しいやつです。でも問題の本質は変わらないのとテストのしやすさで一番上を指定させて貰います(笑)

*2 XXXXは4桁の16進文字列。A0A0とかな。

*3 当然、UNRESERVEDとRESERVEDも%u形式ではない。そもそもURICって、URIのCharacterっぽ。

*4 XXは2桁の16進文字列。A0とかな。A0好きだな俺。

[情報][ネタ] プログラマーには、コーディングの生産性で10倍、コードレビューの速度では6倍もの能力差があるという

むしろそれくらいしか差がないのかと。

デバッグの手間を含めるとあと何桁かは変わる気がします。

[情報][ネタ] Microsoft Updateが遅くなるトラブルが発生

再送要求を送信しても20秒間応答がなく,その後MSSが536バイトのTCPパケットが送られてくる。TCPハンドシェークのオプションでMSSを 1414バイトに指定しているのにもかかわらず,「Microsoft UpdateサイトからMSSが1460バイトで網内分割禁止のフラグを立てたTCPパケットが送られてきて,フレッツ網内の手前で廃棄されているように見えた」

あかんがな。

某チャットのあるサーバが時々タイムアウトするのもMMS周りかなぁ。

[日記] ついにtwitterからログアウト喰らった

初めてだ。

パスワードなんだっけな(笑)

[日記] 最近ツインテール属性に目覚めた。

模様だ。

pixivでブックマークしてる知らないキャラはツインテールが多い事に気づいた。

いや、髪の毛をあげてる姿に弱いのか? でもツインテールの方が気になるな。

[ネタ][アニメ] 【咲-Saki-】アニメの結果にギャーギャー言うな(リンク先ネタバレ有り)

まぁ、ある意味予想通りでしたけどね(笑)

[ネタ] 温暖化ガス「25%減」目標、海外排出枠も活用 民主

海外にお金ばらまきますよ宣言来た

[ネタ] 「ニヤニヤできるDVD!好みの女の子が好きな声優さんの声で告白してくれます!」

4人のヒロインに「能登麻美子」「辻あゆみ」「堀江由衣」「平野綾」を割り当てられるこれまた特殊なソフト。4人全員堀江由衣も出来ます

これは声優ファンにはたまらない!

Last Update: 2009-09-15 21:20:44

カレンダー

2003|04|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|07|08|11|
2013|03|05|08|
2014|01|
2015|04|05|06|07|09|10|12|
2016|01|03|05|06|10|11|
2017|06|
2018|05|08|09|10|11|
2019|04|08|12|
2020|03|08|09|11|
2021|05|
2022|04|
2023|12|
2024|04|
Generated by tDiary version 4.1.2 + amazon(DB Patch 0.2.1) + counter(DB Patch 0.2) + IKPatch version beta 4.0.1.
Powered by Ruby version 2.1.5-p273 with ruby-fcgi