au × SSL × header(“location:~”); は相対パスで書け!

このエントリーをはてなブックマークに追加
はてなブックマーク - au × SSL × header(“location:~”); は相対パスで書け!
Share on Facebook
Post to Google Buzz
Bookmark this on Yahoo Bookmark
Bookmark this on Livedoor Clip
Share on FriendFeed

ハマリにハマった、このツボ。

<?php
header(locaiont”https://www.sample.com/aaa/bbb.php”);
?>

たぶんこの書き方の方が推奨されてたような気がするんだけども、
実際問題、これをSSL有の環境において、auのケータイで見た場合
エラーにより(502)のエラーが出る。

しかしwebサーバー側には、全くエラーログは残らないし、
au以外の携帯端末、PCでは何も問題なし。
検索しても同じようなハメで悩んでる人は見つからないし、厄介なので対応不可といいたいところだけども、クライアント担当者とその上司がauケータイを使っていて、そう簡単に片付けるわけにもいかなかった。

auの公式サイトによると、古い端末(非win?)ではSSL通信をする際に、端末とau鯖間でau独自のssl暗号化をしているのだとか。
コレが原因かと思っていろいろ調べてた。

簡単なサンプルページを数枚作成して、リンクを貼ってその先で別なファイルにheaderで飛ばしてみたり
POSTしてまたheaderで飛ばしてみたり・・・・・。

んで出た結論としては、

header(“location:~”); を使うときは相対パスで書け! 

つまり

<?php
header(locaiont”https://www.sample.com/aaa/bbb.php”);
?>

<?php
header(location:”bbb.php”);
?>

という具合に相対パスで指定してやると、問題解決。

This entry was posted in 未分類. Bookmark the permalink.