system関数やパイプを使って外部プログラムを実行する時は
汚染チェックを必ずする。
エスケープするべき文字
& ; ` ' \ " | * ? ~ < > ^ ( ) [ ] { } $ \n \r
以下の置き換えで全てをエスケープすると良い。
s/([\&\;\`\'\\\"\|\*\?\~\<\>\^\(\)\[\]\{\}\$\n\r])/\\$1/g;
Filed under: perl
Trackback Uri
IEでだけ動作しない事が多いようなのでメモ
JSON(JSONP)で
name( { 'data' :[ ['あいう','せそ'], ['かきく','けこ'], ['さしす','せそ'] ] } );
こんな感じのものを使おうとすると
‘]’がありませんというようなエラーが出る。
cgi等スクリプトで出力する場合はレスポンスヘッダを明示的に指定する必要がある。
perlなら
print “Content-type: application/json; charset=UTF-8;\n\n”;
のように。
charsetは’utf8‘ではダメで’UTF-8‘か’utf-8‘とハイフンが必要のようだ。
Content-typeも application/json とするのが良いらしい。
参考:
追記:
どうやら呼び出す時に<script>タグで指定すれば(静的ファイルでも)動作する模様。
動的に育成しない場合はレスポンスヘッダの付加は難しいし使えるかも。
例)<script type=”text/javascript” src=”../json.js” charset=”utf-8″></script>
この場合、type は text/javascript でのみ動作した。(win XP,IE8)
application/json や application/javascript では動作しなかった。
Filed under: JavaScript
Trackback Uri
最近のコメント