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

POSTがPOST元のページにリダイレクトされる場合の問題

つぎのような仕組みで、POSTがもとのページにリダイレクトされるような仕組みを作成することがある。

#!/usr/bin/perl

if($ENV{"REQUEST_METHOD"} eq "POST")
{
print<<"EOF";
Content-Disposition: inline; filename="test.aaa"
Content-Type: application/aaa

EOF
system("cat test.aaa");
}
else
{
print<<"EOF";
Content-Type: text/html
Cache-Control: no-cache

<html>
 <body>
  <form method="POST" action="test.pl">
   <input type="hidden" name="dummy" value="test">
   <input type="submit" value="submit">
  </form>
 </body>
</html>
EOF
}

このような場合に、うちの会社で作っていたMIMEタイプハンドラのActiveXが正しくリクエストをハンドリングできなかった。調査したところ、一般的なActiveXでもうまくいかないことが分かった。こういう場合、通常は、ActiveXのSRCプロパティに対して、正しいURLが渡されることを期待するのだが、意味が分からないことに、SRCプロパティには、IEのキャッシュにあるとおぼしきファイルのローカルパスが渡される。さらに、そのファイルは実は存在しない。こういう問題に出くわすのは、何もうちの会社のプラグインに限らず、Flashなどでもそうだったが、Adobe Readerだけはちゃんと動作していた。