トップ «前の日記(2003-07-24) 最新 次の日記(2003-07-26)» 編集

日々の破片

Subscribe with livedoor Reader
著作一覧

2003-07-25

_ IE6(多分)だめじゃん

<IMG SRC="data:image/png;base64,.....">

ネスケ7.1は表示できるが、IE6はだめぽ。

HKLMHKCR\MIME\Database\Content Typeには、image/pngは登録されているし、ファイルならちゃんと表示される。

もうちょっと試して見るが、どうしてこう、いつも期待を裏切ってくれるのか?

ちなみに、RFC(2397 The "data" URL scheme)は1998年にはもう出ている。

_ 続き

Jpegでもだめだ。Jpegもだめなら、だめなんだろう、きっと。ActiveXコントロールをサポートしたりするより、こういう基本的なところをちゃんとやってくれよう。ネスケでも表示できなければ、こっちのバグだと思うんだが、あっちは表示できるんだよね……

_ ソース

s = ''

File.open(ARGV[0], 'rb') do |x|

s = x.read

end

data = [s].pack('m').gsub("\n", "")

s=<<EOD

<html>

<body>

<img src="data:image/png;base64,#{data}" ALT="IE使ってますね!">

</body>

</html>

EOD

puts s

_ 入れてみたりして

見えますか?

見えねえよ。

_ ASP.NETで画像の動的生成

というわけで、画像の動的生成はC#で簡単にできる

しかし、HTMLにそのまま吐き出すことは今のところ無理ぽ。

しかし、事情があってサーバー側にファイルとして出力するわけにはいかない。しかも、IEは拡張子を見る腐れ仕様の持ち主だから、<IMG SRC="hogehoge.aspx&postできないじゃん。まあクッキーをうまく使うしかないだろうな。">がうまくいくかはわからんし(Content-Typeを見ないということはさすがに無いだろうから、これが有力候補だけど)、何しろ拡張子だからaspxを仮想的にPNGにするってのも問題ありそうだ。

って言うか、IE独自のDHTMLタグとかでdata:の代替がありそうな気もするなぁ。

_ 思い当たった

URLの2Kバイト制限に引っ掛かってるんだ、きっと。検証するには1200バイトくらいのPNGで試せばいいんだろうが、面倒なんでパス。

あきらめるとするか……

_ ASP.NETで生出力

大した話ではなく、単に

private void Page_Load(object sender, System.EventArgs e)

{

Response.ContentType = "image/png";

Response.BinaryWrite(makeImage());

Response.Flush();

}

とするだけ。いくらIEでも、拡張子がASPXでもContent-Typeは見るようだ。

_ 空白をプラスに変更する根拠

やっとわかった。RFC1866 (Hypertext Markup Language 2.0)の8.2.1だ。URIやMIMEの資料を見ても出てないはずだ。

The default encoding for all forms is `application/x-www-form-

urlencoded'. A form data set is represented in this media type as

follows:

1. The form field names and values are escaped: space

characters are replaced by `+', and then reserved characters

are escaped as per [URL];

RFC2397で言及されているAでのURLの長さ制限についてちょっと見てみようか(ブロードバンドじゃ気にする必要は無いとは思うけど、10K越えてるわけだし)と思って読んでいたら見つけた。以前、読んだはずだけど、完全にこの文書そのものを忘れていたようだ。

本日のツッコミ(全2件) [ツッコミを入れる]
_ たむら (2003-07-25 09:58)

w3m-m17n でしっかり見えますた>くまとタコ。<br># こんな小技があったのか。しかし IEださっ

_ arton (2003-07-25 14:50)

w3mあなどりがたし。まあ、data:の使い道はHTMLメール送ってくるリッチコンテンツ大好きなOEな人を誘導して「画像見えない? プッ」とやるくらいかな。<br>#マジなところ、IEがヘタにサポートすると 1.バッファオーバーランしたり 2.テンポラリファイルをローカル権限で実行 とか、セキュリティホールが空くだけだから、サポートしないってのも見識かも。と自分を慰める……


2003|06|07|08|09|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|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|

ジェズイットを見習え