URL転送というサービスが蔓延っているようなので、手元で試してみた。
この転送サービスがどのような転送方法を使っているのかはまだ知らない。
目的は、ECサイトのコミュニティで、この転送サービスを使ってSSLドメインへURL転送し、ログインや買い物を使えるようにしているという書き込みを見たので、そんなことできるのかと漠然と思って、確認してみたかったというもの。
RFCに定義されている、Redirect項の3xx のステータスコードを確認してから、下記コードを置いて確かめてみた。
まずは、RFC2616邦訳。
http://www.studyinghttp.net/rfc_ja/rfc2616#Sec10.3
最初のHTMLファイル。
(my domain1)/redirecttest.php
<html> <head><title>redirect test</title></head> <body> <?php for ($i=300;$i<308;$i++) { ?> <h2><?php echo $i ?></h2> <p> <form name="form<?php echo $i?>g" method="GET" action="http://(my domain2)/forward_<?php echo $i ?>.php"> <input type="text" name="sendtext" value="<?php echo $i ?> get"> <input type="submit" value=" send "> </form> </p> <p> <form name="form<?php echo $i?>p" method="POST" action="http://(my domain2)/forward_<?php echo $i ?>.php"> <input type="text" name="sendtext" value="<?php echo $i ?> post"> <input type="submit" value=" send "> </form> </p> <?php } ?> </body></html>
(my domain2)/.htaccess
# 300 Multiple Choices Redirect 300 /forward_300.php http://(my domain3)/forward.php # 301 Moved Permanently Redirect 301 /forward_301.php http://(my domain3)/forward.php # 302 Moved Temporarily Redirect 302 /forward_302.php http://(my domain3)/forward.php # 303 See Other Redirect 303 /forward_303.php http://(my domain3)/forward.php # 304 Not Modified Redirect 304 /forward_304.php http://(my domain3)/forward.php # 305 Use Proxy Redirect 305 /forward_305.php http://(my domain3)/forward.php # 306 (Unused) Redirect 306 /forward_306.php http://(my domain3)/forward.php # 307 Temporary Redirect Redirect 307 /forward_307.php http://(my domain3)/forward.php
(my domain3)/forward.php
<?php var_dump($_GET); var_dump($_POST);
で、IE8、Firefox3.6.13、Opera10.62、Safari5.0.3、Chrome8.0 で確認したが、307以外全部、GETはそのまま通して、POSTはGETに変えられた。
307 POSTを警告付きで送信できたのは、firefox, Opera。
警告なしに送信されたのは、Safari, IE8, Chrome。
文中の my domain{1,2,3} はすべて違うサブドメインを使った。同ドメインSSLを持ってないので、ちゃんと同じ環境にできてるわけじゃない事には注意。
各ブラウザは特になんの設定の見直しもせず、普段と同じままで行った。
まだ調査中。